@natchs/browser-mcp 2.0.0

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 (274) hide show
  1. package/README.md +141 -0
  2. package/dist/core/auth.d.ts +7 -0
  3. package/dist/core/auth.d.ts.map +1 -0
  4. package/dist/core/auth.js +23 -0
  5. package/dist/core/auth.js.map +1 -0
  6. package/dist/core/cache.d.ts +24 -0
  7. package/dist/core/cache.d.ts.map +1 -0
  8. package/dist/core/cache.js +67 -0
  9. package/dist/core/cache.js.map +1 -0
  10. package/dist/core/config.d.ts +362 -0
  11. package/dist/core/config.d.ts.map +1 -0
  12. package/dist/core/config.js +281 -0
  13. package/dist/core/config.js.map +1 -0
  14. package/dist/core/context.d.ts +38 -0
  15. package/dist/core/context.d.ts.map +1 -0
  16. package/dist/core/context.js +19 -0
  17. package/dist/core/context.js.map +1 -0
  18. package/dist/core/errors.d.ts +82 -0
  19. package/dist/core/errors.d.ts.map +1 -0
  20. package/dist/core/errors.js +98 -0
  21. package/dist/core/errors.js.map +1 -0
  22. package/dist/core/logger.d.ts +22 -0
  23. package/dist/core/logger.d.ts.map +1 -0
  24. package/dist/core/logger.js +41 -0
  25. package/dist/core/logger.js.map +1 -0
  26. package/dist/core/metrics.d.ts +24 -0
  27. package/dist/core/metrics.d.ts.map +1 -0
  28. package/dist/core/metrics.js +59 -0
  29. package/dist/core/metrics.js.map +1 -0
  30. package/dist/core/network-capture.d.ts +117 -0
  31. package/dist/core/network-capture.d.ts.map +1 -0
  32. package/dist/core/network-capture.js +349 -0
  33. package/dist/core/network-capture.js.map +1 -0
  34. package/dist/core/network-export.d.ts +6 -0
  35. package/dist/core/network-export.d.ts.map +1 -0
  36. package/dist/core/network-export.js +163 -0
  37. package/dist/core/network-export.js.map +1 -0
  38. package/dist/core/output.d.ts +66 -0
  39. package/dist/core/output.d.ts.map +1 -0
  40. package/dist/core/output.js +114 -0
  41. package/dist/core/output.js.map +1 -0
  42. package/dist/core/pipeline.d.ts +25 -0
  43. package/dist/core/pipeline.d.ts.map +1 -0
  44. package/dist/core/pipeline.js +52 -0
  45. package/dist/core/pipeline.js.map +1 -0
  46. package/dist/core/plugin.d.ts +26 -0
  47. package/dist/core/plugin.d.ts.map +1 -0
  48. package/dist/core/plugin.js +49 -0
  49. package/dist/core/plugin.js.map +1 -0
  50. package/dist/core/rate-limit.d.ts +33 -0
  51. package/dist/core/rate-limit.d.ts.map +1 -0
  52. package/dist/core/rate-limit.js +89 -0
  53. package/dist/core/rate-limit.js.map +1 -0
  54. package/dist/core/registry.d.ts +67 -0
  55. package/dist/core/registry.d.ts.map +1 -0
  56. package/dist/core/registry.js +270 -0
  57. package/dist/core/registry.js.map +1 -0
  58. package/dist/core/sandbox.d.ts +20 -0
  59. package/dist/core/sandbox.d.ts.map +1 -0
  60. package/dist/core/sandbox.js +168 -0
  61. package/dist/core/sandbox.js.map +1 -0
  62. package/dist/core/schema-gen.d.ts +5 -0
  63. package/dist/core/schema-gen.d.ts.map +1 -0
  64. package/dist/core/schema-gen.js +115 -0
  65. package/dist/core/schema-gen.js.map +1 -0
  66. package/dist/core/session.d.ts +88 -0
  67. package/dist/core/session.d.ts.map +1 -0
  68. package/dist/core/session.js +300 -0
  69. package/dist/core/session.js.map +1 -0
  70. package/dist/index.d.ts +5 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +192 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/prompts/index.d.ts +11 -0
  75. package/dist/prompts/index.d.ts.map +1 -0
  76. package/dist/prompts/index.js +121 -0
  77. package/dist/prompts/index.js.map +1 -0
  78. package/dist/tools/admin/cache.d.ts +7 -0
  79. package/dist/tools/admin/cache.d.ts.map +1 -0
  80. package/dist/tools/admin/cache.js +27 -0
  81. package/dist/tools/admin/cache.js.map +1 -0
  82. package/dist/tools/admin/index.d.ts +3 -0
  83. package/dist/tools/admin/index.d.ts.map +1 -0
  84. package/dist/tools/admin/index.js +9 -0
  85. package/dist/tools/admin/index.js.map +1 -0
  86. package/dist/tools/admin/server-status.d.ts +14 -0
  87. package/dist/tools/admin/server-status.d.ts.map +1 -0
  88. package/dist/tools/admin/server-status.js +33 -0
  89. package/dist/tools/admin/server-status.js.map +1 -0
  90. package/dist/tools/browser/cookies.d.ts +46 -0
  91. package/dist/tools/browser/cookies.d.ts.map +1 -0
  92. package/dist/tools/browser/cookies.js +65 -0
  93. package/dist/tools/browser/cookies.js.map +1 -0
  94. package/dist/tools/browser/evaluate.d.ts +12 -0
  95. package/dist/tools/browser/evaluate.d.ts.map +1 -0
  96. package/dist/tools/browser/evaluate.js +61 -0
  97. package/dist/tools/browser/evaluate.js.map +1 -0
  98. package/dist/tools/browser/index.d.ts +3 -0
  99. package/dist/tools/browser/index.d.ts.map +1 -0
  100. package/dist/tools/browser/index.js +17 -0
  101. package/dist/tools/browser/index.js.map +1 -0
  102. package/dist/tools/browser/page-info.d.ts +6 -0
  103. package/dist/tools/browser/page-info.d.ts.map +1 -0
  104. package/dist/tools/browser/page-info.js +25 -0
  105. package/dist/tools/browser/page-info.js.map +1 -0
  106. package/dist/tools/browser/pdf.d.ts +45 -0
  107. package/dist/tools/browser/pdf.d.ts.map +1 -0
  108. package/dist/tools/browser/pdf.js +57 -0
  109. package/dist/tools/browser/pdf.js.map +1 -0
  110. package/dist/tools/browser/screenshot.d.ts +21 -0
  111. package/dist/tools/browser/screenshot.d.ts.map +1 -0
  112. package/dist/tools/browser/screenshot.js +41 -0
  113. package/dist/tools/browser/screenshot.js.map +1 -0
  114. package/dist/tools/extraction/extract-css.d.ts +33 -0
  115. package/dist/tools/extraction/extract-css.d.ts.map +1 -0
  116. package/dist/tools/extraction/extract-css.js +112 -0
  117. package/dist/tools/extraction/extract-css.js.map +1 -0
  118. package/dist/tools/extraction/extract.d.ts +10 -0
  119. package/dist/tools/extraction/extract.d.ts.map +1 -0
  120. package/dist/tools/extraction/extract.js +71 -0
  121. package/dist/tools/extraction/extract.js.map +1 -0
  122. package/dist/tools/extraction/index.d.ts +3 -0
  123. package/dist/tools/extraction/index.d.ts.map +1 -0
  124. package/dist/tools/extraction/index.js +17 -0
  125. package/dist/tools/extraction/index.js.map +1 -0
  126. package/dist/tools/interaction/click.d.ts +15 -0
  127. package/dist/tools/interaction/click.d.ts.map +1 -0
  128. package/dist/tools/interaction/click.js +31 -0
  129. package/dist/tools/interaction/click.js.map +1 -0
  130. package/dist/tools/interaction/drag.d.ts +18 -0
  131. package/dist/tools/interaction/drag.d.ts.map +1 -0
  132. package/dist/tools/interaction/drag.js +27 -0
  133. package/dist/tools/interaction/drag.js.map +1 -0
  134. package/dist/tools/interaction/file-upload.d.ts +18 -0
  135. package/dist/tools/interaction/file-upload.d.ts.map +1 -0
  136. package/dist/tools/interaction/file-upload.js +37 -0
  137. package/dist/tools/interaction/file-upload.js.map +1 -0
  138. package/dist/tools/interaction/fill.d.ts +18 -0
  139. package/dist/tools/interaction/fill.d.ts.map +1 -0
  140. package/dist/tools/interaction/fill.js +34 -0
  141. package/dist/tools/interaction/fill.js.map +1 -0
  142. package/dist/tools/interaction/hover.d.ts +15 -0
  143. package/dist/tools/interaction/hover.d.ts.map +1 -0
  144. package/dist/tools/interaction/hover.js +26 -0
  145. package/dist/tools/interaction/hover.js.map +1 -0
  146. package/dist/tools/interaction/index.d.ts +3 -0
  147. package/dist/tools/interaction/index.d.ts.map +1 -0
  148. package/dist/tools/interaction/index.js +19 -0
  149. package/dist/tools/interaction/index.js.map +1 -0
  150. package/dist/tools/interaction/press-key.d.ts +12 -0
  151. package/dist/tools/interaction/press-key.d.ts.map +1 -0
  152. package/dist/tools/interaction/press-key.js +24 -0
  153. package/dist/tools/interaction/press-key.js.map +1 -0
  154. package/dist/tools/interaction/select.d.ts +18 -0
  155. package/dist/tools/interaction/select.d.ts.map +1 -0
  156. package/dist/tools/interaction/select.js +28 -0
  157. package/dist/tools/interaction/select.js.map +1 -0
  158. package/dist/tools/interaction/type.d.ts +21 -0
  159. package/dist/tools/interaction/type.d.ts.map +1 -0
  160. package/dist/tools/interaction/type.js +30 -0
  161. package/dist/tools/interaction/type.js.map +1 -0
  162. package/dist/tools/navigation/back.d.ts +6 -0
  163. package/dist/tools/navigation/back.d.ts.map +1 -0
  164. package/dist/tools/navigation/back.js +16 -0
  165. package/dist/tools/navigation/back.js.map +1 -0
  166. package/dist/tools/navigation/forward.d.ts +6 -0
  167. package/dist/tools/navigation/forward.d.ts.map +1 -0
  168. package/dist/tools/navigation/forward.js +16 -0
  169. package/dist/tools/navigation/forward.js.map +1 -0
  170. package/dist/tools/navigation/index.d.ts +3 -0
  171. package/dist/tools/navigation/index.d.ts.map +1 -0
  172. package/dist/tools/navigation/index.js +13 -0
  173. package/dist/tools/navigation/index.js.map +1 -0
  174. package/dist/tools/navigation/navigate.d.ts +19 -0
  175. package/dist/tools/navigation/navigate.d.ts.map +1 -0
  176. package/dist/tools/navigation/navigate.js +52 -0
  177. package/dist/tools/navigation/navigate.js.map +1 -0
  178. package/dist/tools/navigation/refresh.d.ts +15 -0
  179. package/dist/tools/navigation/refresh.d.ts.map +1 -0
  180. package/dist/tools/navigation/refresh.js +26 -0
  181. package/dist/tools/navigation/refresh.js.map +1 -0
  182. package/dist/tools/navigation/wait-for.d.ts +12 -0
  183. package/dist/tools/navigation/wait-for.d.ts.map +1 -0
  184. package/dist/tools/navigation/wait-for.js +23 -0
  185. package/dist/tools/navigation/wait-for.js.map +1 -0
  186. package/dist/tools/network/console.d.ts +17 -0
  187. package/dist/tools/network/console.d.ts.map +1 -0
  188. package/dist/tools/network/console.js +29 -0
  189. package/dist/tools/network/console.js.map +1 -0
  190. package/dist/tools/network/dialog.d.ts +14 -0
  191. package/dist/tools/network/dialog.d.ts.map +1 -0
  192. package/dist/tools/network/dialog.js +34 -0
  193. package/dist/tools/network/dialog.js.map +1 -0
  194. package/dist/tools/network/index.d.ts +3 -0
  195. package/dist/tools/network/index.d.ts.map +1 -0
  196. package/dist/tools/network/index.js +21 -0
  197. package/dist/tools/network/index.js.map +1 -0
  198. package/dist/tools/network/network-clear.d.ts +11 -0
  199. package/dist/tools/network/network-clear.d.ts.map +1 -0
  200. package/dist/tools/network/network-clear.js +24 -0
  201. package/dist/tools/network/network-clear.js.map +1 -0
  202. package/dist/tools/network/network-entries.d.ts +35 -0
  203. package/dist/tools/network/network-entries.d.ts.map +1 -0
  204. package/dist/tools/network/network-entries.js +73 -0
  205. package/dist/tools/network/network-entries.js.map +1 -0
  206. package/dist/tools/network/network-export.d.ts +14 -0
  207. package/dist/tools/network/network-export.d.ts.map +1 -0
  208. package/dist/tools/network/network-export.js +24 -0
  209. package/dist/tools/network/network-export.js.map +1 -0
  210. package/dist/tools/network/network-requests.d.ts +20 -0
  211. package/dist/tools/network/network-requests.d.ts.map +1 -0
  212. package/dist/tools/network/network-requests.js +36 -0
  213. package/dist/tools/network/network-requests.js.map +1 -0
  214. package/dist/tools/network/network-response.d.ts +14 -0
  215. package/dist/tools/network/network-response.d.ts.map +1 -0
  216. package/dist/tools/network/network-response.js +56 -0
  217. package/dist/tools/network/network-response.js.map +1 -0
  218. package/dist/tools/network/wait-nav.d.ts +15 -0
  219. package/dist/tools/network/wait-nav.d.ts.map +1 -0
  220. package/dist/tools/network/wait-nav.js +26 -0
  221. package/dist/tools/network/wait-nav.js.map +1 -0
  222. package/dist/tools/network/websocket-frames.d.ts +17 -0
  223. package/dist/tools/network/websocket-frames.d.ts.map +1 -0
  224. package/dist/tools/network/websocket-frames.js +24 -0
  225. package/dist/tools/network/websocket-frames.js.map +1 -0
  226. package/dist/tools/re/api-discover.d.ts +11 -0
  227. package/dist/tools/re/api-discover.d.ts.map +1 -0
  228. package/dist/tools/re/api-discover.js +57 -0
  229. package/dist/tools/re/api-discover.js.map +1 -0
  230. package/dist/tools/re/auth-analyze.d.ts +11 -0
  231. package/dist/tools/re/auth-analyze.d.ts.map +1 -0
  232. package/dist/tools/re/auth-analyze.js +86 -0
  233. package/dist/tools/re/auth-analyze.js.map +1 -0
  234. package/dist/tools/re/index.d.ts +3 -0
  235. package/dist/tools/re/index.d.ts.map +1 -0
  236. package/dist/tools/re/index.js +11 -0
  237. package/dist/tools/re/index.js.map +1 -0
  238. package/dist/tools/re/js-beautify.d.ts +14 -0
  239. package/dist/tools/re/js-beautify.d.ts.map +1 -0
  240. package/dist/tools/re/js-beautify.js +132 -0
  241. package/dist/tools/re/js-beautify.js.map +1 -0
  242. package/dist/tools/re/js-deobfuscate.d.ts +11 -0
  243. package/dist/tools/re/js-deobfuscate.d.ts.map +1 -0
  244. package/dist/tools/re/js-deobfuscate.js +96 -0
  245. package/dist/tools/re/js-deobfuscate.js.map +1 -0
  246. package/dist/tools/session/close.d.ts +11 -0
  247. package/dist/tools/session/close.d.ts.map +1 -0
  248. package/dist/tools/session/close.js +24 -0
  249. package/dist/tools/session/close.js.map +1 -0
  250. package/dist/tools/session/index.d.ts +3 -0
  251. package/dist/tools/session/index.d.ts.map +1 -0
  252. package/dist/tools/session/index.js +9 -0
  253. package/dist/tools/session/index.js.map +1 -0
  254. package/dist/tools/session/list.d.ts +14 -0
  255. package/dist/tools/session/list.d.ts.map +1 -0
  256. package/dist/tools/session/list.js +26 -0
  257. package/dist/tools/session/list.js.map +1 -0
  258. package/dist/tools/session/open.d.ts +11 -0
  259. package/dist/tools/session/open.d.ts.map +1 -0
  260. package/dist/tools/session/open.js +25 -0
  261. package/dist/tools/session/open.js.map +1 -0
  262. package/dist/tools/stealth/fingerprint.d.ts +11 -0
  263. package/dist/tools/stealth/fingerprint.d.ts.map +1 -0
  264. package/dist/tools/stealth/fingerprint.js +72 -0
  265. package/dist/tools/stealth/fingerprint.js.map +1 -0
  266. package/dist/tools/stealth/human-behavior.d.ts +29 -0
  267. package/dist/tools/stealth/human-behavior.d.ts.map +1 -0
  268. package/dist/tools/stealth/human-behavior.js +86 -0
  269. package/dist/tools/stealth/human-behavior.js.map +1 -0
  270. package/dist/tools/stealth/index.d.ts +3 -0
  271. package/dist/tools/stealth/index.d.ts.map +1 -0
  272. package/dist/tools/stealth/index.js +7 -0
  273. package/dist/tools/stealth/index.js.map +1 -0
  274. package/package.json +40 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-requests.js","sourceRoot":"","sources":["../../../src/tools/network/network-requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,aAAa,GAAG,aAAa,CAAC;AAEpC,SAAS,WAAW,CAAC,OAAe;IAClC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAgB,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACrE,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAC7C,IAAI,MAAM,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3F,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,OAAO,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,WAAW,CAAC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import type { ToolHandler } from '../../core/registry.js';
3
+ export declare const NetworkResponseArgs: z.ZodObject<{
4
+ index: z.ZodNumber;
5
+ raw: z.ZodDefault<z.ZodBoolean>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ index: number;
8
+ raw: boolean;
9
+ }, {
10
+ index: number;
11
+ raw?: boolean | undefined;
12
+ }>;
13
+ export declare const networkResponseHandler: ToolHandler;
14
+ //# sourceMappingURL=network-response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-response.d.ts","sourceRoot":"","sources":["../../../src/tools/network/network-response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,eAAO,MAAM,sBAAsB,EAAE,WA2CpC,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ import { errorResult, okResult } from '../../core/output.js';
3
+ import { ErrorCode } from '../../core/errors.js';
4
+ export const NetworkResponseArgs = z.object({
5
+ index: z.number().int().min(1),
6
+ raw: z.boolean().default(false),
7
+ });
8
+ export const networkResponseHandler = async (args, ctx) => {
9
+ const parsed = NetworkResponseArgs.safeParse(args);
10
+ if (!parsed.success)
11
+ return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
12
+ const { index, raw } = parsed.data;
13
+ try {
14
+ const entries = ctx.session?.getNetworkEntries?.() ?? [];
15
+ const richEntry = entries[index - 1];
16
+ if (richEntry) {
17
+ if (richEntry.responseBody) {
18
+ const text = raw
19
+ ? richEntry.responseBody
20
+ : Buffer.from(richEntry.responseBody, 'base64').toString('utf-8').slice(0, 10000);
21
+ return okResult({
22
+ status: richEntry.status,
23
+ statusText: richEntry.statusText,
24
+ url: richEntry.url,
25
+ headers: richEntry.responseHeaders,
26
+ body: text,
27
+ cached: true,
28
+ });
29
+ }
30
+ if (!richEntry.completed) {
31
+ return errorResult(ErrorCode.NO_RESPONSE, 'Request is still pending');
32
+ }
33
+ }
34
+ const legacyEntries = ctx.session?.getNetworkRequests?.() ?? [];
35
+ const legacyEntry = legacyEntries[index - 1];
36
+ if (!legacyEntry)
37
+ return errorResult(ErrorCode.REQUEST_NOT_FOUND, `Request #${index} not found`);
38
+ const response = await legacyEntry.request.response();
39
+ if (!response)
40
+ return errorResult(ErrorCode.NO_RESPONSE, 'No response available for this request');
41
+ const body = await response.body().catch(() => null);
42
+ const text = body ? Buffer.from(body).toString('utf-8').slice(0, 10000) : '';
43
+ return okResult({
44
+ status: response.status(),
45
+ statusText: response.statusText(),
46
+ url: response.url(),
47
+ headers: response.headers(),
48
+ body: text,
49
+ });
50
+ }
51
+ catch (err) {
52
+ const message = err instanceof Error ? err.message : String(err);
53
+ return errorResult(ErrorCode.NETWORK_RESPONSE_FAILED, message);
54
+ }
55
+ };
56
+ //# sourceMappingURL=network-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-response.js","sourceRoot":"","sources":["../../../src/tools/network/network-response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ import type { ToolHandler } from '../../core/registry.js';
3
+ import type { Page } from 'playwright';
4
+ export declare const WaitForNavigationArgs: z.ZodObject<{
5
+ timeout: z.ZodDefault<z.ZodNumber>;
6
+ url: z.ZodOptional<z.ZodString>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ timeout: number;
9
+ url?: string | undefined;
10
+ }, {
11
+ timeout?: number | undefined;
12
+ url?: string | undefined;
13
+ }>;
14
+ export declare const waitForNavigationHandler: ToolHandler<Page>;
15
+ //# sourceMappingURL=wait-nav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-nav.d.ts","sourceRoot":"","sources":["../../../src/tools/network/wait-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,qBAAqB;;;;;;;;;EAGhC,CAAC;AAEH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,IAAI,CActD,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { errorResult, okResult } from '../../core/output.js';
3
+ import { ErrorCode } from '../../core/errors.js';
4
+ export const WaitForNavigationArgs = z.object({
5
+ timeout: z.number().int().min(100).max(120000).default(10000),
6
+ url: z.string().optional(),
7
+ });
8
+ export const waitForNavigationHandler = async (args, ctx) => {
9
+ const parsed = WaitForNavigationArgs.safeParse(args);
10
+ if (!parsed.success)
11
+ return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
12
+ const { timeout, url } = parsed.data;
13
+ try {
14
+ const page = await ctx.getPage();
15
+ const waitOptions = { timeout };
16
+ if (url)
17
+ waitOptions.url = (u) => u.includes(url);
18
+ await page.waitForNavigation(waitOptions);
19
+ return okResult({ navigated: true, url: page.url() });
20
+ }
21
+ catch (err) {
22
+ const message = err instanceof Error ? err.message : String(err);
23
+ return errorResult(ErrorCode.WAIT_NAVIGATION_FAILED, message);
24
+ }
25
+ };
26
+ //# sourceMappingURL=wait-nav.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-nav.js","sourceRoot":"","sources":["../../../src/tools/network/wait-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAsB,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IAC7E,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,WAAW,GAAQ,EAAE,OAAO,EAAE,CAAC;QACrC,IAAI,GAAG;YAAE,WAAW,CAAC,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAI,CAAC,CAAC;QAC3D,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,WAAW,CAAC,SAAS,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ import type { ToolHandler } from '../../core/registry.js';
3
+ export declare const WebSocketFramesArgs: z.ZodObject<{
4
+ wsId: z.ZodOptional<z.ZodString>;
5
+ offset: z.ZodOptional<z.ZodNumber>;
6
+ limit: z.ZodOptional<z.ZodNumber>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ offset?: number | undefined;
9
+ limit?: number | undefined;
10
+ wsId?: string | undefined;
11
+ }, {
12
+ offset?: number | undefined;
13
+ limit?: number | undefined;
14
+ wsId?: string | undefined;
15
+ }>;
16
+ export declare const websocketFramesHandler: ToolHandler;
17
+ //# sourceMappingURL=websocket-frames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-frames.d.ts","sourceRoot":"","sources":["../../../src/tools/network/websocket-frames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAI9B,CAAC;AAEH,eAAO,MAAM,sBAAsB,EAAE,WAYpC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ import { errorResult, applyPagination, paginatedOkResult } from '../../core/output.js';
3
+ import { ErrorCode } from '../../core/errors.js';
4
+ export const WebSocketFramesArgs = z.object({
5
+ wsId: z.string().optional(),
6
+ offset: z.number().int().min(0).optional(),
7
+ limit: z.number().int().min(1).max(500).optional(),
8
+ });
9
+ export const websocketFramesHandler = async (args, ctx) => {
10
+ const parsed = WebSocketFramesArgs.safeParse(args);
11
+ if (!parsed.success)
12
+ return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
13
+ const { wsId, offset, limit } = parsed.data;
14
+ try {
15
+ const frames = ctx.session?.getWebSocketFrames(wsId) ?? [];
16
+ const { items, totalCount } = applyPagination(frames, { offset, limit });
17
+ return paginatedOkResult(items, totalCount, offset ?? 0, limit ?? 50);
18
+ }
19
+ catch (err) {
20
+ const message = err instanceof Error ? err.message : String(err);
21
+ return errorResult(ErrorCode.WEBSOCKET_FRAMES_FAILED, message);
22
+ }
23
+ };
24
+ //# sourceMappingURL=websocket-frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-frames.js","sourceRoot":"","sources":["../../../src/tools/network/websocket-frames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAgB,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IACrE,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,OAAO,iBAAiB,CAAC,KAA6C,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAChH,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,WAAW,CAAC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import type { ToolHandler } from '../../core/registry.js';
3
+ export declare const ApiDiscoverArgs: z.ZodObject<{
4
+ source: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ source: string;
7
+ }, {
8
+ source: string;
9
+ }>;
10
+ export declare const apiDiscoverHandler: ToolHandler;
11
+ //# sourceMappingURL=api-discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-discover.d.ts","sourceRoot":"","sources":["../../../src/tools/re/api-discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAuC1D,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,WAkBhC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { z } from 'zod';
2
+ import { errorResult, okResult } from '../../core/output.js';
3
+ import { ErrorCode } from '../../core/errors.js';
4
+ const URL_PATTERNS = [
5
+ /["'](https?:\/\/[^"' \t\r\n]+)["']/g,
6
+ /["'](\/[a-zA-Z_][\w/.%-]*(?:\/[\w.%-]+)*(?:\?[\w=&%.+-]+)?)["']/g,
7
+ /["'](\/api\/[\w/.-]*)["']/g,
8
+ /["'](\/v\d+\/[\w/.-]*)["']/g,
9
+ /["']([\w]+(?:\.[\w]+)+\/[\w/.-]*)["']/g,
10
+ /(?:fetch|axios|request|ajax|get|post|put|delete|patch)\s*\(\s*["']([^"']+)["']/g,
11
+ /(?:url|endpoint|path|route|baseURL)\s*[=:]\s*["']([^"']+)["']/g,
12
+ /["'](\/graphql)["']/g,
13
+ /["'](\/rest\/[\w/.-]*)["']/g,
14
+ /["'](\/sockjs\/[\w/.-]*)["']/g,
15
+ /["'](\/ws[\w/.-]*)["']/g,
16
+ ];
17
+ function discoverEndpoints(input) {
18
+ const found = new Map();
19
+ for (const pattern of URL_PATTERNS) {
20
+ const matches = input.matchAll(pattern);
21
+ for (const match of matches) {
22
+ const url = match[1];
23
+ if (!url || url.length < 3)
24
+ continue;
25
+ const key = url.toLowerCase();
26
+ if (!found.has(key)) {
27
+ found.set(key, { url, context: match[0].substring(0, 60) });
28
+ }
29
+ }
30
+ }
31
+ return Array.from(found.values());
32
+ }
33
+ export const ApiDiscoverArgs = z.object({
34
+ source: z.string().min(1).describe('JavaScript source code to analyze for API endpoints'),
35
+ });
36
+ export const apiDiscoverHandler = async (args, _ctx) => {
37
+ const parsed = ApiDiscoverArgs.safeParse(args);
38
+ if (!parsed.success)
39
+ return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
40
+ const { source } = parsed.data;
41
+ try {
42
+ const endpoints = discoverEndpoints(source);
43
+ const fullUrls = endpoints.filter(e => e.url.startsWith('http'));
44
+ const relativePaths = endpoints.filter(e => !e.url.startsWith('http'));
45
+ return okResult({
46
+ totalEndpoints: endpoints.length,
47
+ fullUrls,
48
+ relativePaths,
49
+ endpoints: endpoints.map(e => e.url),
50
+ });
51
+ }
52
+ catch (err) {
53
+ const message = err instanceof Error ? err.message : String(err);
54
+ return errorResult(ErrorCode.API_DISCOVER_FAILED, message);
55
+ }
56
+ };
57
+ //# sourceMappingURL=api-discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-discover.js","sourceRoot":"","sources":["../../../src/tools/re/api-discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import type { ToolHandler } from '../../core/registry.js';
3
+ export declare const AuthAnalyzeArgs: z.ZodObject<{
4
+ networkLog: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ networkLog: string;
7
+ }, {
8
+ networkLog: string;
9
+ }>;
10
+ export declare const authAnalyzeHandler: ToolHandler;
11
+ //# sourceMappingURL=auth-analyze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-analyze.d.ts","sourceRoot":"","sources":["../../../src/tools/re/auth-analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AA4E1D,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,WAWhC,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { z } from 'zod';
2
+ import { errorResult, okResult } from '../../core/output.js';
3
+ import { ErrorCode } from '../../core/errors.js';
4
+ function analyzeAuthFlow(networkLog) {
5
+ const indicators = [];
6
+ const endpoints = [];
7
+ const text = networkLog.toLowerCase();
8
+ if (text.includes('oauth') || text.includes('authorize') || text.includes('token')) {
9
+ indicators.push('Contains OAuth-related keywords (authorize, token)');
10
+ }
11
+ if (text.includes('/login') || text.includes('/signin') || text.includes('/sign-in')) {
12
+ indicators.push('Contains login endpoint');
13
+ }
14
+ if (text.includes('/auth')) {
15
+ indicators.push('Contains /auth endpoint');
16
+ }
17
+ if (text.includes('jwt') || text.includes('bearer')) {
18
+ indicators.push('JWT/Bearer token authentication detected');
19
+ }
20
+ if (text.includes('csrf') || text.includes('xsrf')) {
21
+ indicators.push('CSRF/XSRF token protection detected');
22
+ }
23
+ if (text.includes('session') || text.includes('cookie')) {
24
+ indicators.push('Session/cookie-based authentication detected');
25
+ }
26
+ if (text.includes('2fa') || text.includes('mfa') || text.includes('otp')) {
27
+ indicators.push('Multi-factor authentication detected');
28
+ }
29
+ if (text.includes('saml') || text.includes('sso') || text.includes('oidc')) {
30
+ indicators.push('SSO/SAML/OIDC authentication detected');
31
+ }
32
+ if (text.includes('recaptcha') || text.includes('captcha') || text.includes('turnstile')) {
33
+ indicators.push('CAPTCHA challenge detected');
34
+ }
35
+ if (text.includes('basic') && text.includes('authorization')) {
36
+ indicators.push('Basic HTTP authentication detected');
37
+ }
38
+ const endpointPattern = /https?:\/\/[^\s"'`]+(?:login|auth|signin|token|oauth|session|sso)[^\s"'`]*/gi;
39
+ let match;
40
+ while ((match = endpointPattern.exec(networkLog)) !== null) {
41
+ endpoints.push(match[0].substring(0, 120));
42
+ }
43
+ let authType = 'unknown';
44
+ let confidence = 'low';
45
+ if (indicators.length >= 3) {
46
+ confidence = 'high';
47
+ }
48
+ else if (indicators.length >= 1) {
49
+ confidence = 'medium';
50
+ }
51
+ if (text.includes('oauth') && text.includes('token')) {
52
+ authType = 'OAuth 2.0';
53
+ confidence = 'high';
54
+ }
55
+ else if (text.includes('saml') || text.includes('sso')) {
56
+ authType = 'SSO/SAML';
57
+ }
58
+ else if (text.includes('jwt') || text.includes('bearer')) {
59
+ authType = 'JWT/Bearer Token';
60
+ }
61
+ else if (text.includes('basic') && text.includes('authorization')) {
62
+ authType = 'HTTP Basic Auth';
63
+ }
64
+ else if (text.includes('session') && (text.includes('login') || text.includes('cookie'))) {
65
+ authType = 'Session Cookie';
66
+ }
67
+ return { authType, confidence, indicators, endpoints };
68
+ }
69
+ export const AuthAnalyzeArgs = z.object({
70
+ networkLog: z.string().min(1).describe('Network request/response log text to analyze'),
71
+ });
72
+ export const authAnalyzeHandler = async (args, _ctx) => {
73
+ const parsed = AuthAnalyzeArgs.safeParse(args);
74
+ if (!parsed.success)
75
+ return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
76
+ const { networkLog } = parsed.data;
77
+ try {
78
+ const result = analyzeAuthFlow(networkLog);
79
+ return okResult(result);
80
+ }
81
+ catch (err) {
82
+ const message = err instanceof Error ? err.message : String(err);
83
+ return errorResult(ErrorCode.AUTH_ANALYZE_FAILED, message);
84
+ }
85
+ };
86
+ //# sourceMappingURL=auth-analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-analyze.js","sourceRoot":"","sources":["../../../src/tools/re/auth-analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUjD,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnF,UAAU,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACrF,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,UAAU,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,UAAU,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,UAAU,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,UAAU,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,UAAU,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACzF,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC7D,UAAU,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,eAAe,GAAG,8EAA8E,CAAC;IACvG,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3D,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,QAAQ,GAAG,SAAS,CAAC;IACzB,IAAI,UAAU,GAA8B,KAAK,CAAC;IAElD,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3B,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAClC,UAAU,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,QAAQ,GAAG,WAAW,CAAC;QACvB,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,QAAQ,GAAG,UAAU,CAAC;IACxB,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,QAAQ,GAAG,kBAAkB,CAAC;IAChC,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACpE,QAAQ,GAAG,iBAAiB,CAAC;IAC/B,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC3F,QAAQ,GAAG,gBAAgB,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;CACvF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAgB,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAClE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,WAAW,CAAC,SAAS,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolRegistry } from '../../core/registry.js';
2
+ export declare function registerRETools(registry: ToolRegistry): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/re/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAiB5D"}
@@ -0,0 +1,11 @@
1
+ import { jsBeautifyHandler, JsBeautifyArgs } from './js-beautify.js';
2
+ import { jsDeobfuscateHandler, JsDeobfuscateArgs } from './js-deobfuscate.js';
3
+ import { apiDiscoverHandler, ApiDiscoverArgs } from './api-discover.js';
4
+ import { authAnalyzeHandler, AuthAnalyzeArgs } from './auth-analyze.js';
5
+ export function registerRETools(registry) {
6
+ registry.register({ name: 'browser_js_beautify', description: 'Beautify and format JavaScript code', category: 're', needsBrowser: false, schema: JsBeautifyArgs }, jsBeautifyHandler);
7
+ registry.register({ name: 'browser_js_deobfuscate', description: 'Deobfuscate JavaScript code (hex, unicode, base64)', category: 're', needsBrowser: false, schema: JsDeobfuscateArgs }, jsDeobfuscateHandler);
8
+ registry.register({ name: 'browser_api_discover', description: 'Discover API endpoints in JavaScript source code', category: 're', needsBrowser: false, schema: ApiDiscoverArgs }, apiDiscoverHandler);
9
+ registry.register({ name: 'browser_auth_analyze', description: 'Analyze network logs to detect authentication flow', category: 're', needsBrowser: false, schema: AuthAnalyzeArgs }, authAnalyzeHandler);
10
+ }
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/re/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,UAAU,eAAe,CAAC,QAAsB;IACpD,QAAQ,CAAC,QAAQ,CACf,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,EAChJ,iBAAiB,CAClB,CAAC;IACF,QAAQ,CAAC,QAAQ,CACf,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,oDAAoD,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,EACrK,oBAAoB,CACrB,CAAC;IACF,QAAQ,CAAC,QAAQ,CACf,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,kDAAkD,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,EAC/J,kBAAkB,CACnB,CAAC;IACF,QAAQ,CAAC,QAAQ,CACf,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,oDAAoD,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,EACjK,kBAAkB,CACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ import type { ToolHandler } from '../../core/registry.js';
3
+ export declare const JsBeautifyArgs: z.ZodObject<{
4
+ code: z.ZodString;
5
+ indentSize: z.ZodDefault<z.ZodNumber>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ code: string;
8
+ indentSize: number;
9
+ }, {
10
+ code: string;
11
+ indentSize?: number | undefined;
12
+ }>;
13
+ export declare const jsBeautifyHandler: ToolHandler;
14
+ //# sourceMappingURL=js-beautify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-beautify.d.ts","sourceRoot":"","sources":["../../../src/tools/re/js-beautify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAoH1D,eAAO,MAAM,cAAc;;;;;;;;;EAGzB,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAE,WAgB/B,CAAC"}
@@ -0,0 +1,132 @@
1
+ import { z } from 'zod';
2
+ import { errorResult, okResult } from '../../core/output.js';
3
+ import { ErrorCode } from '../../core/errors.js';
4
+ import { sanitizeInput } from '../../core/sandbox.js';
5
+ function beautifyJS(code, indentSize) {
6
+ const indent = ' '.repeat(indentSize);
7
+ let result = '';
8
+ let depth = 0;
9
+ let inTemplate = 0;
10
+ let i = 0;
11
+ const emit = (s) => { result += s; };
12
+ const addIndent = () => { emit(indent.repeat(depth)); };
13
+ while (i < code.length) {
14
+ const ch = code[i];
15
+ const next = code[i + 1] ?? '';
16
+ if (ch === '`' && code[i - 1] !== '\\') {
17
+ inTemplate ^= 1;
18
+ emit(ch);
19
+ i++;
20
+ continue;
21
+ }
22
+ if (inTemplate) {
23
+ emit(ch);
24
+ i++;
25
+ continue;
26
+ }
27
+ if (ch === '/' && next === '/') {
28
+ addIndent();
29
+ while (i < code.length && code[i] !== '\n') {
30
+ emit(code[i]);
31
+ i++;
32
+ }
33
+ emit('\n');
34
+ continue;
35
+ }
36
+ if (ch === '/' && next === '*') {
37
+ addIndent();
38
+ emit('/*');
39
+ i += 2;
40
+ while (i < code.length && !(code[i] === '*' && code[i + 1] === '/')) {
41
+ if (code[i] === '\n') {
42
+ emit('\n');
43
+ addIndent();
44
+ }
45
+ else {
46
+ emit(code[i]);
47
+ }
48
+ i++;
49
+ }
50
+ emit('*/');
51
+ i += 2;
52
+ continue;
53
+ }
54
+ if (ch === '\'' || ch === '"') {
55
+ const quote = ch;
56
+ emit(ch);
57
+ i++;
58
+ while (i < code.length && (code[i] !== quote || code[i - 1] === '\\')) {
59
+ emit(code[i]);
60
+ i++;
61
+ }
62
+ emit(code[i] ?? '');
63
+ i++;
64
+ continue;
65
+ }
66
+ if (ch === '{') {
67
+ emit(' {\n');
68
+ depth++;
69
+ addIndent();
70
+ i++;
71
+ continue;
72
+ }
73
+ if (ch === '}') {
74
+ depth = Math.max(0, depth - 1);
75
+ emit('\n');
76
+ addIndent();
77
+ emit('}');
78
+ i++;
79
+ continue;
80
+ }
81
+ if (ch === ';') {
82
+ emit(';\n');
83
+ addIndent();
84
+ i++;
85
+ continue;
86
+ }
87
+ if (ch === ',' && !inTemplate) {
88
+ emit(',\n');
89
+ addIndent();
90
+ i++;
91
+ continue;
92
+ }
93
+ if (ch === '\n') {
94
+ const trimmed = result.trimEnd();
95
+ result = trimmed + '\n';
96
+ addIndent();
97
+ i++;
98
+ continue;
99
+ }
100
+ if (ch === ' ' && next === ' ') {
101
+ i++;
102
+ continue;
103
+ }
104
+ emit(ch);
105
+ i++;
106
+ }
107
+ return result.trimEnd();
108
+ }
109
+ export const JsBeautifyArgs = z.object({
110
+ code: z.string().min(1).describe('JavaScript code to beautify'),
111
+ indentSize: z.number().min(1).max(8).default(2).describe('Number of spaces per indent level'),
112
+ });
113
+ export const jsBeautifyHandler = async (args, _ctx) => {
114
+ const parsed = JsBeautifyArgs.safeParse(args);
115
+ if (!parsed.success)
116
+ return errorResult(ErrorCode.INVALID_ARGS, parsed.error.message);
117
+ const { code, indentSize } = parsed.data;
118
+ const { sanitized: safeCode } = sanitizeInput(code);
119
+ try {
120
+ const beautified = beautifyJS(safeCode, indentSize);
121
+ return okResult({
122
+ originalLength: safeCode.length,
123
+ beautifiedLength: beautified.length,
124
+ code: beautified,
125
+ });
126
+ }
127
+ catch (err) {
128
+ const message = err instanceof Error ? err.message : String(err);
129
+ return errorResult(ErrorCode.BEAUTIFY_FAILED, message);
130
+ }
131
+ };
132
+ //# sourceMappingURL=js-beautify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-beautify.js","sourceRoot":"","sources":["../../../src/tools/re/js-beautify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import type { ToolHandler } from '../../core/registry.js';
3
+ export declare const JsDeobfuscateArgs: z.ZodObject<{
4
+ code: z.ZodString;
5
+ }, "strip", z.ZodTypeAny, {
6
+ code: string;
7
+ }, {
8
+ code: string;
9
+ }>;
10
+ export declare const jsDeobfuscateHandler: ToolHandler;
11
+ //# sourceMappingURL=js-deobfuscate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-deobfuscate.d.ts","sourceRoot":"","sources":["../../../src/tools/re/js-deobfuscate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAwF1D,eAAO,MAAM,iBAAiB;;;;;;EAE5B,CAAC;AAEH,eAAO,MAAM,oBAAoB,EAAE,WAkBlC,CAAC"}