notebooklm-mcp-ultimate 2.2.1

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 (207) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +420 -0
  3. package/dist/api/batch-execute-client.d.ts +232 -0
  4. package/dist/api/batch-execute-client.d.ts.map +1 -0
  5. package/dist/api/batch-execute-client.js +672 -0
  6. package/dist/api/batch-execute-client.js.map +1 -0
  7. package/dist/api/content-types.d.ts +44 -0
  8. package/dist/api/content-types.d.ts.map +1 -0
  9. package/dist/api/content-types.js +89 -0
  10. package/dist/api/content-types.js.map +1 -0
  11. package/dist/api/csrf-manager.d.ts +94 -0
  12. package/dist/api/csrf-manager.d.ts.map +1 -0
  13. package/dist/api/csrf-manager.js +178 -0
  14. package/dist/api/csrf-manager.js.map +1 -0
  15. package/dist/api/index.d.ts +27 -0
  16. package/dist/api/index.d.ts.map +1 -0
  17. package/dist/api/index.js +56 -0
  18. package/dist/api/index.js.map +1 -0
  19. package/dist/api/operation-poller.d.ts +67 -0
  20. package/dist/api/operation-poller.d.ts.map +1 -0
  21. package/dist/api/operation-poller.js +132 -0
  22. package/dist/api/operation-poller.js.map +1 -0
  23. package/dist/api/request-builder.d.ts +196 -0
  24. package/dist/api/request-builder.d.ts.map +1 -0
  25. package/dist/api/request-builder.js +371 -0
  26. package/dist/api/request-builder.js.map +1 -0
  27. package/dist/api/response-parser.d.ts +124 -0
  28. package/dist/api/response-parser.d.ts.map +1 -0
  29. package/dist/api/response-parser.js +595 -0
  30. package/dist/api/response-parser.js.map +1 -0
  31. package/dist/api/rpc-ids.d.ts +92 -0
  32. package/dist/api/rpc-ids.d.ts.map +1 -0
  33. package/dist/api/rpc-ids.js +138 -0
  34. package/dist/api/rpc-ids.js.map +1 -0
  35. package/dist/api/streaming-chat-client.d.ts +50 -0
  36. package/dist/api/streaming-chat-client.d.ts.map +1 -0
  37. package/dist/api/streaming-chat-client.js +198 -0
  38. package/dist/api/streaming-chat-client.js.map +1 -0
  39. package/dist/api/types.d.ts +318 -0
  40. package/dist/api/types.d.ts.map +1 -0
  41. package/dist/api/types.js +22 -0
  42. package/dist/api/types.js.map +1 -0
  43. package/dist/auth/auth-manager.d.ts +163 -0
  44. package/dist/auth/auth-manager.d.ts.map +1 -0
  45. package/dist/auth/auth-manager.js +1055 -0
  46. package/dist/auth/auth-manager.js.map +1 -0
  47. package/dist/auth/cookie-store.d.ts +121 -0
  48. package/dist/auth/cookie-store.d.ts.map +1 -0
  49. package/dist/auth/cookie-store.js +283 -0
  50. package/dist/auth/cookie-store.js.map +1 -0
  51. package/dist/config.d.ts +89 -0
  52. package/dist/config.d.ts.map +1 -0
  53. package/dist/config.js +217 -0
  54. package/dist/config.js.map +1 -0
  55. package/dist/errors.d.ts +26 -0
  56. package/dist/errors.d.ts.map +1 -0
  57. package/dist/errors.js +41 -0
  58. package/dist/errors.js.map +1 -0
  59. package/dist/index.d.ts +32 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +439 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/library/notebook-library.d.ts +79 -0
  64. package/dist/library/notebook-library.d.ts.map +1 -0
  65. package/dist/library/notebook-library.js +296 -0
  66. package/dist/library/notebook-library.js.map +1 -0
  67. package/dist/library/types.d.ts +67 -0
  68. package/dist/library/types.d.ts.map +1 -0
  69. package/dist/library/types.js +8 -0
  70. package/dist/library/types.js.map +1 -0
  71. package/dist/operations/content-operations.d.ts +78 -0
  72. package/dist/operations/content-operations.d.ts.map +1 -0
  73. package/dist/operations/content-operations.js +162 -0
  74. package/dist/operations/content-operations.js.map +1 -0
  75. package/dist/operations/hybrid-executor.d.ts +47 -0
  76. package/dist/operations/hybrid-executor.d.ts.map +1 -0
  77. package/dist/operations/hybrid-executor.js +114 -0
  78. package/dist/operations/hybrid-executor.js.map +1 -0
  79. package/dist/operations/notebook-crud-operations.d.ts +52 -0
  80. package/dist/operations/notebook-crud-operations.d.ts.map +1 -0
  81. package/dist/operations/notebook-crud-operations.js +248 -0
  82. package/dist/operations/notebook-crud-operations.js.map +1 -0
  83. package/dist/operations/research-operations.d.ts +42 -0
  84. package/dist/operations/research-operations.d.ts.map +1 -0
  85. package/dist/operations/research-operations.js +189 -0
  86. package/dist/operations/research-operations.js.map +1 -0
  87. package/dist/operations/source-operations.d.ts +59 -0
  88. package/dist/operations/source-operations.d.ts.map +1 -0
  89. package/dist/operations/source-operations.js +280 -0
  90. package/dist/operations/source-operations.js.map +1 -0
  91. package/dist/operations/studio-operations.d.ts +98 -0
  92. package/dist/operations/studio-operations.d.ts.map +1 -0
  93. package/dist/operations/studio-operations.js +309 -0
  94. package/dist/operations/studio-operations.js.map +1 -0
  95. package/dist/resources/resource-handlers.d.ts +22 -0
  96. package/dist/resources/resource-handlers.d.ts.map +1 -0
  97. package/dist/resources/resource-handlers.js +216 -0
  98. package/dist/resources/resource-handlers.js.map +1 -0
  99. package/dist/session/browser-session.d.ts +113 -0
  100. package/dist/session/browser-session.d.ts.map +1 -0
  101. package/dist/session/browser-session.js +670 -0
  102. package/dist/session/browser-session.js.map +1 -0
  103. package/dist/session/session-manager.d.ts +88 -0
  104. package/dist/session/session-manager.d.ts.map +1 -0
  105. package/dist/session/session-manager.js +314 -0
  106. package/dist/session/session-manager.js.map +1 -0
  107. package/dist/session/shared-context-manager.d.ts +107 -0
  108. package/dist/session/shared-context-manager.d.ts.map +1 -0
  109. package/dist/session/shared-context-manager.js +447 -0
  110. package/dist/session/shared-context-manager.js.map +1 -0
  111. package/dist/tools/definitions/ask-question.d.ts +8 -0
  112. package/dist/tools/definitions/ask-question.d.ts.map +1 -0
  113. package/dist/tools/definitions/ask-question.js +213 -0
  114. package/dist/tools/definitions/ask-question.js.map +1 -0
  115. package/dist/tools/definitions/content-generation.d.ts +52 -0
  116. package/dist/tools/definitions/content-generation.d.ts.map +1 -0
  117. package/dist/tools/definitions/content-generation.js +236 -0
  118. package/dist/tools/definitions/content-generation.js.map +1 -0
  119. package/dist/tools/definitions/notebook-crud.d.ts +9 -0
  120. package/dist/tools/definitions/notebook-crud.d.ts.map +1 -0
  121. package/dist/tools/definitions/notebook-crud.js +156 -0
  122. package/dist/tools/definitions/notebook-crud.js.map +1 -0
  123. package/dist/tools/definitions/notebook-management.d.ts +3 -0
  124. package/dist/tools/definitions/notebook-management.d.ts.map +1 -0
  125. package/dist/tools/definitions/notebook-management.js +243 -0
  126. package/dist/tools/definitions/notebook-management.js.map +1 -0
  127. package/dist/tools/definitions/research.d.ts +23 -0
  128. package/dist/tools/definitions/research.d.ts.map +1 -0
  129. package/dist/tools/definitions/research.js +108 -0
  130. package/dist/tools/definitions/research.js.map +1 -0
  131. package/dist/tools/definitions/session-management.d.ts +3 -0
  132. package/dist/tools/definitions/session-management.d.ts.map +1 -0
  133. package/dist/tools/definitions/session-management.js +41 -0
  134. package/dist/tools/definitions/session-management.js.map +1 -0
  135. package/dist/tools/definitions/source-management.d.ts +39 -0
  136. package/dist/tools/definitions/source-management.d.ts.map +1 -0
  137. package/dist/tools/definitions/source-management.js +224 -0
  138. package/dist/tools/definitions/source-management.js.map +1 -0
  139. package/dist/tools/definitions/studio.d.ts +36 -0
  140. package/dist/tools/definitions/studio.d.ts.map +1 -0
  141. package/dist/tools/definitions/studio.js +153 -0
  142. package/dist/tools/definitions/studio.js.map +1 -0
  143. package/dist/tools/definitions/system.d.ts +3 -0
  144. package/dist/tools/definitions/system.d.ts.map +1 -0
  145. package/dist/tools/definitions/system.js +143 -0
  146. package/dist/tools/definitions/system.js.map +1 -0
  147. package/dist/tools/definitions.d.ts +12 -0
  148. package/dist/tools/definitions.d.ts.map +1 -0
  149. package/dist/tools/definitions.js +36 -0
  150. package/dist/tools/definitions.js.map +1 -0
  151. package/dist/tools/handlers/content-handlers.d.ts +287 -0
  152. package/dist/tools/handlers/content-handlers.d.ts.map +1 -0
  153. package/dist/tools/handlers/content-handlers.js +244 -0
  154. package/dist/tools/handlers/content-handlers.js.map +1 -0
  155. package/dist/tools/handlers/notebook-crud-handlers.d.ts +69 -0
  156. package/dist/tools/handlers/notebook-crud-handlers.d.ts.map +1 -0
  157. package/dist/tools/handlers/notebook-crud-handlers.js +117 -0
  158. package/dist/tools/handlers/notebook-crud-handlers.js.map +1 -0
  159. package/dist/tools/handlers/research-handlers.d.ts +37 -0
  160. package/dist/tools/handlers/research-handlers.d.ts.map +1 -0
  161. package/dist/tools/handlers/research-handlers.js +87 -0
  162. package/dist/tools/handlers/research-handlers.js.map +1 -0
  163. package/dist/tools/handlers/source-handlers.d.ts +52 -0
  164. package/dist/tools/handlers/source-handlers.d.ts.map +1 -0
  165. package/dist/tools/handlers/source-handlers.js +177 -0
  166. package/dist/tools/handlers/source-handlers.js.map +1 -0
  167. package/dist/tools/handlers/studio-handlers.d.ts +125 -0
  168. package/dist/tools/handlers/studio-handlers.d.ts.map +1 -0
  169. package/dist/tools/handlers/studio-handlers.js +183 -0
  170. package/dist/tools/handlers/studio-handlers.js.map +1 -0
  171. package/dist/tools/handlers.d.ts +629 -0
  172. package/dist/tools/handlers.d.ts.map +1 -0
  173. package/dist/tools/handlers.js +833 -0
  174. package/dist/tools/handlers.js.map +1 -0
  175. package/dist/tools/index.d.ts +8 -0
  176. package/dist/tools/index.d.ts.map +1 -0
  177. package/dist/tools/index.js +8 -0
  178. package/dist/tools/index.js.map +1 -0
  179. package/dist/types.d.ts +82 -0
  180. package/dist/types.d.ts.map +1 -0
  181. package/dist/types.js +5 -0
  182. package/dist/types.js.map +1 -0
  183. package/dist/utils/cleanup-manager.d.ts +133 -0
  184. package/dist/utils/cleanup-manager.d.ts.map +1 -0
  185. package/dist/utils/cleanup-manager.js +673 -0
  186. package/dist/utils/cleanup-manager.js.map +1 -0
  187. package/dist/utils/cli-handler.d.ts +16 -0
  188. package/dist/utils/cli-handler.d.ts.map +1 -0
  189. package/dist/utils/cli-handler.js +102 -0
  190. package/dist/utils/cli-handler.js.map +1 -0
  191. package/dist/utils/logger.d.ts +61 -0
  192. package/dist/utils/logger.d.ts.map +1 -0
  193. package/dist/utils/logger.js +92 -0
  194. package/dist/utils/logger.js.map +1 -0
  195. package/dist/utils/page-utils.d.ts +54 -0
  196. package/dist/utils/page-utils.d.ts.map +1 -0
  197. package/dist/utils/page-utils.js +405 -0
  198. package/dist/utils/page-utils.js.map +1 -0
  199. package/dist/utils/settings-manager.d.ts +37 -0
  200. package/dist/utils/settings-manager.d.ts.map +1 -0
  201. package/dist/utils/settings-manager.js +120 -0
  202. package/dist/utils/settings-manager.js.map +1 -0
  203. package/dist/utils/stealth-utils.d.ts +135 -0
  204. package/dist/utils/stealth-utils.d.ts.map +1 -0
  205. package/dist/utils/stealth-utils.js +398 -0
  206. package/dist/utils/stealth-utils.js.map +1 -0
  207. package/package.json +63 -0
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Stealth utilities for human-like browser behavior
3
+ *
4
+ * This module provides functions to simulate realistic human interactions:
5
+ * - Human-like typing (speed configurable via CONFIG.typingWpmMin/Max)
6
+ * - Realistic mouse movements (Bezier curves with jitter)
7
+ * - Random delays (normal distribution)
8
+ * - Smooth scrolling
9
+ * - Reading pauses
10
+ *
11
+ * Based on the Python implementation from stealth_utils.py
12
+ */
13
+ import type { Page } from "patchright";
14
+ /**
15
+ * Sleep for specified milliseconds
16
+ */
17
+ export declare function sleep(ms: number): Promise<void>;
18
+ /**
19
+ * Generate random integer between min and max (inclusive)
20
+ */
21
+ export declare function randomInt(min: number, max: number): number;
22
+ /**
23
+ * Generate random float between min and max
24
+ */
25
+ export declare function randomFloat(min: number, max: number): number;
26
+ /**
27
+ * Generate random character (for typos)
28
+ */
29
+ export declare function randomChar(): string;
30
+ /**
31
+ * Generate Gaussian (normal) distributed random number
32
+ * Uses Box-Muller transform
33
+ */
34
+ export declare function gaussian(mean: number, stdDev: number): number;
35
+ /**
36
+ * Add a random delay to simulate human thinking/reaction time
37
+ * Uses normal distribution for more realistic delays
38
+ *
39
+ * @param minMs Minimum delay in milliseconds (default: from CONFIG)
40
+ * @param maxMs Maximum delay in milliseconds (default: from CONFIG)
41
+ */
42
+ export declare function randomDelay(minMs?: number, maxMs?: number): Promise<void>;
43
+ /**
44
+ * Type text in a human-like manner with variable speed and optional typos
45
+ *
46
+ * Simulates realistic typing patterns:
47
+ * - Variable speed (45-65 WPM by default)
48
+ * - Occasional typos (2% chance)
49
+ * - Longer pauses after punctuation
50
+ * - Realistic character delays
51
+ *
52
+ * @param page Playwright page instance
53
+ * @param selector CSS selector of input element
54
+ * @param text Text to type
55
+ * @param options Typing options (wpm, withTypos)
56
+ */
57
+ export declare function humanType(page: Page, selector: string, text: string, options?: {
58
+ wpm?: number;
59
+ withTypos?: boolean;
60
+ }): Promise<void>;
61
+ /**
62
+ * Move mouse in a realistic curved path to target coordinates
63
+ * Uses Bezier-like curves with jitter for natural movement
64
+ *
65
+ * @param page Playwright page instance
66
+ * @param targetX Target X coordinate (default: random)
67
+ * @param targetY Target Y coordinate (default: random)
68
+ * @param steps Number of steps in movement (default: random 10-25)
69
+ */
70
+ export declare function randomMouseMovement(page: Page, targetX?: number, targetY?: number, steps?: number): Promise<void>;
71
+ /**
72
+ * Click an element with realistic human behavior
73
+ * Includes mouse movement, pause, and click
74
+ *
75
+ * @param page Playwright page instance
76
+ * @param selector CSS selector of element to click
77
+ * @param withMouseMovement Whether to move mouse first (default: true)
78
+ */
79
+ export declare function realisticClick(page: Page, selector: string, withMouseMovement?: boolean): Promise<void>;
80
+ /**
81
+ * Scroll the page smoothly like a human
82
+ * Uses multiple small steps for smooth animation
83
+ *
84
+ * @param page Playwright page instance
85
+ * @param amount Scroll amount in pixels (default: random 100-400)
86
+ * @param direction Scroll direction ("down" or "up")
87
+ */
88
+ export declare function smoothScroll(page: Page, amount?: number, direction?: "up" | "down"): Promise<void>;
89
+ /**
90
+ * Pause as if reading text, based on length
91
+ * Calculates realistic reading time based on text length and WPM
92
+ *
93
+ * @param textLength Number of characters to "read"
94
+ * @param wpm Reading speed in words per minute (default: random 200-250)
95
+ */
96
+ export declare function readingPause(textLength: number, wpm?: number): Promise<void>;
97
+ /**
98
+ * Add small random mouse movements to simulate natural fidgeting
99
+ *
100
+ * @param page Playwright page instance
101
+ * @param iterations Number of small movements (default: 3)
102
+ */
103
+ export declare function randomMouseJitter(page: Page, iterations?: number): Promise<void>;
104
+ /**
105
+ * Hover over an element with realistic mouse movement
106
+ *
107
+ * @param page Playwright page instance
108
+ * @param selector CSS selector of element to hover
109
+ */
110
+ export declare function hoverElement(page: Page, selector: string): Promise<void>;
111
+ /**
112
+ * Simulate reading a page with scrolling and pauses
113
+ * Adds realistic behavior of scrolling and reading content
114
+ *
115
+ * @param page Playwright page instance
116
+ */
117
+ export declare function simulateReadingPage(page: Page): Promise<void>;
118
+ declare const _default: {
119
+ sleep: typeof sleep;
120
+ randomInt: typeof randomInt;
121
+ randomFloat: typeof randomFloat;
122
+ randomChar: typeof randomChar;
123
+ gaussian: typeof gaussian;
124
+ randomDelay: typeof randomDelay;
125
+ humanType: typeof humanType;
126
+ randomMouseMovement: typeof randomMouseMovement;
127
+ realisticClick: typeof realisticClick;
128
+ smoothScroll: typeof smoothScroll;
129
+ readingPause: typeof readingPause;
130
+ randomMouseJitter: typeof randomMouseJitter;
131
+ hoverElement: typeof hoverElement;
132
+ simulateReadingPage: typeof simulateReadingPage;
133
+ };
134
+ export default _default;
135
+ //# sourceMappingURL=stealth-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stealth-utils.d.ts","sourceRoot":"","sources":["../../src/utils/stealth-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC;;GAEG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAK7D;AAMD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsBf;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,OAAO,CAAC,IAAI,CAAC,CAwEf;AAMD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAuCf;AAMD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,iBAAiB,GAAE,OAAc,GAChC,OAAO,CAAC,IAAI,CAAC,CAgCf;AAMD;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,GAAE,IAAI,GAAG,MAAe,GAChC,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAMD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBlF;AAMD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAaf;AAMD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB9E;AAMD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBnE;;;;;;;;;;;;;;;;;AAMD,wBAeE"}
@@ -0,0 +1,398 @@
1
+ /**
2
+ * Stealth utilities for human-like browser behavior
3
+ *
4
+ * This module provides functions to simulate realistic human interactions:
5
+ * - Human-like typing (speed configurable via CONFIG.typingWpmMin/Max)
6
+ * - Realistic mouse movements (Bezier curves with jitter)
7
+ * - Random delays (normal distribution)
8
+ * - Smooth scrolling
9
+ * - Reading pauses
10
+ *
11
+ * Based on the Python implementation from stealth_utils.py
12
+ */
13
+ import { CONFIG } from "../config.js";
14
+ // ============================================================================
15
+ // Helper Functions
16
+ // ============================================================================
17
+ /**
18
+ * Sleep for specified milliseconds
19
+ */
20
+ export async function sleep(ms) {
21
+ return new Promise((resolve) => setTimeout(resolve, ms));
22
+ }
23
+ /**
24
+ * Generate random integer between min and max (inclusive)
25
+ */
26
+ export function randomInt(min, max) {
27
+ return Math.floor(Math.random() * (max - min + 1)) + min;
28
+ }
29
+ /**
30
+ * Generate random float between min and max
31
+ */
32
+ export function randomFloat(min, max) {
33
+ return Math.random() * (max - min) + min;
34
+ }
35
+ /**
36
+ * Generate random character (for typos)
37
+ */
38
+ export function randomChar() {
39
+ const chars = "qwertyuiopasdfghjklzxcvbnm";
40
+ return chars[randomInt(0, chars.length - 1)];
41
+ }
42
+ /**
43
+ * Generate Gaussian (normal) distributed random number
44
+ * Uses Box-Muller transform
45
+ */
46
+ export function gaussian(mean, stdDev) {
47
+ const u1 = Math.random();
48
+ const u2 = Math.random();
49
+ const z0 = Math.sqrt(-2.0 * Math.log(u1)) * Math.cos(2.0 * Math.PI * u2);
50
+ return z0 * stdDev + mean;
51
+ }
52
+ // ============================================================================
53
+ // Random Delays
54
+ // ============================================================================
55
+ /**
56
+ * Add a random delay to simulate human thinking/reaction time
57
+ * Uses normal distribution for more realistic delays
58
+ *
59
+ * @param minMs Minimum delay in milliseconds (default: from CONFIG)
60
+ * @param maxMs Maximum delay in milliseconds (default: from CONFIG)
61
+ */
62
+ export async function randomDelay(minMs, maxMs) {
63
+ minMs = minMs ?? CONFIG.minDelayMs;
64
+ maxMs = maxMs ?? CONFIG.maxDelayMs;
65
+ if (!CONFIG.stealthEnabled || !CONFIG.stealthRandomDelays) {
66
+ // Fixed delay (average)
67
+ const target = minMs === maxMs ? minMs : (minMs + maxMs) / 2;
68
+ if (target > 0) {
69
+ await sleep(target);
70
+ }
71
+ return;
72
+ }
73
+ // Use normal distribution for more realistic delays
74
+ // Mean at 60% of range, standard deviation of 20% of range
75
+ const mean = minMs + (maxMs - minMs) * 0.6;
76
+ const stdDev = (maxMs - minMs) * 0.2;
77
+ let delay = gaussian(mean, stdDev);
78
+ delay = Math.max(minMs, Math.min(maxMs, delay)); // Clamp to range
79
+ await sleep(delay);
80
+ }
81
+ // ============================================================================
82
+ // Human Typing
83
+ // ============================================================================
84
+ /**
85
+ * Type text in a human-like manner with variable speed and optional typos
86
+ *
87
+ * Simulates realistic typing patterns:
88
+ * - Variable speed (45-65 WPM by default)
89
+ * - Occasional typos (2% chance)
90
+ * - Longer pauses after punctuation
91
+ * - Realistic character delays
92
+ *
93
+ * @param page Playwright page instance
94
+ * @param selector CSS selector of input element
95
+ * @param text Text to type
96
+ * @param options Typing options (wpm, withTypos)
97
+ */
98
+ export async function humanType(page, selector, text, options = {}) {
99
+ if (!CONFIG.stealthEnabled || !CONFIG.stealthHumanTyping) {
100
+ // Fast typing without stealth
101
+ await page.fill(selector, text);
102
+ return;
103
+ }
104
+ const wpm = options.wpm ?? randomInt(CONFIG.typingWpmMin, CONFIG.typingWpmMax);
105
+ const withTypos = options.withTypos ?? true;
106
+ // Calculate average delay per character (in ms)
107
+ // WPM = (characters / 5) / minutes
108
+ // Average word length ~5 characters
109
+ const charsPerMinute = wpm * 5;
110
+ const avgDelayMs = (60 * 1000) / charsPerMinute;
111
+ // Clear existing text first
112
+ await page.fill(selector, "");
113
+ await randomDelay(30, 80);
114
+ // Click to focus
115
+ await page.click(selector);
116
+ await randomDelay(20, 60);
117
+ // Type each character
118
+ let currentText = "";
119
+ let i = 0;
120
+ while (i < text.length) {
121
+ const char = text[i];
122
+ // Simulate very rare typo (0.3% chance) and shorter correction
123
+ if (withTypos && Math.random() < 0.003 && i > 0) {
124
+ // Type wrong character
125
+ const wrongChar = randomChar();
126
+ currentText += wrongChar;
127
+ await page.fill(selector, currentText);
128
+ // Shorter notice window for faster typing
129
+ const noticeDelay = randomFloat(avgDelayMs * 0.6, avgDelayMs * 1.1);
130
+ await sleep(noticeDelay);
131
+ // Backspace
132
+ currentText = currentText.slice(0, -1);
133
+ await page.fill(selector, currentText);
134
+ await randomDelay(20, 60);
135
+ }
136
+ // Type correct character
137
+ currentText += char;
138
+ await page.fill(selector, currentText);
139
+ // Variable delay between characters – tuned for faster but still human-like typing
140
+ let delay;
141
+ if (char === "." || char === "!" || char === "?") {
142
+ delay = randomFloat(avgDelayMs * 1.05, avgDelayMs * 1.4);
143
+ }
144
+ else if (char === " ") {
145
+ delay = randomFloat(avgDelayMs * 0.5, avgDelayMs * 0.9);
146
+ }
147
+ else if (char === ",") {
148
+ delay = randomFloat(avgDelayMs * 0.9, avgDelayMs * 1.2);
149
+ }
150
+ else {
151
+ // Normal character
152
+ const variation = randomFloat(0.5, 0.9);
153
+ delay = avgDelayMs * variation;
154
+ }
155
+ await sleep(delay);
156
+ i++;
157
+ }
158
+ // Small delay after finishing typing
159
+ await randomDelay(50, 120);
160
+ }
161
+ // ============================================================================
162
+ // Mouse Movement
163
+ // ============================================================================
164
+ /**
165
+ * Move mouse in a realistic curved path to target coordinates
166
+ * Uses Bezier-like curves with jitter for natural movement
167
+ *
168
+ * @param page Playwright page instance
169
+ * @param targetX Target X coordinate (default: random)
170
+ * @param targetY Target Y coordinate (default: random)
171
+ * @param steps Number of steps in movement (default: random 10-25)
172
+ */
173
+ export async function randomMouseMovement(page, targetX, targetY, steps) {
174
+ if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
175
+ return;
176
+ }
177
+ const viewport = page.viewportSize() || CONFIG.viewport;
178
+ targetX = targetX ?? randomInt(100, viewport.width - 100);
179
+ targetY = targetY ?? randomInt(100, viewport.height - 100);
180
+ steps = steps ?? randomInt(10, 25);
181
+ // Start from a random position (we don't know current position)
182
+ const startX = randomInt(0, viewport.width);
183
+ const startY = randomInt(0, viewport.height);
184
+ // Generate curved path using Bezier-like curve
185
+ for (let step = 0; step < steps; step++) {
186
+ const progress = step / steps;
187
+ // Add some randomness to create a natural curve
188
+ const curveOffsetX = Math.sin(progress * Math.PI) * randomInt(-50, 50);
189
+ const curveOffsetY = Math.cos(progress * Math.PI) * randomInt(-30, 30);
190
+ let currentX = startX + (targetX - startX) * progress + curveOffsetX;
191
+ let currentY = startY + (targetY - startY) * progress + curveOffsetY;
192
+ // Add micro-jitter (humans never move in perfectly straight lines)
193
+ const jitterX = randomFloat(-3, 3);
194
+ const jitterY = randomFloat(-3, 3);
195
+ currentX = Math.max(0, Math.min(viewport.width, currentX + jitterX));
196
+ currentY = Math.max(0, Math.min(viewport.height, currentY + jitterY));
197
+ await page.mouse.move(currentX, currentY);
198
+ // Variable delay between movements (faster in middle, slower at ends)
199
+ const delay = 10 + 20 * Math.abs(0.5 - progress);
200
+ await sleep(delay);
201
+ }
202
+ }
203
+ // ============================================================================
204
+ // Realistic Click
205
+ // ============================================================================
206
+ /**
207
+ * Click an element with realistic human behavior
208
+ * Includes mouse movement, pause, and click
209
+ *
210
+ * @param page Playwright page instance
211
+ * @param selector CSS selector of element to click
212
+ * @param withMouseMovement Whether to move mouse first (default: true)
213
+ */
214
+ export async function realisticClick(page, selector, withMouseMovement = true) {
215
+ if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
216
+ await page.click(selector);
217
+ return;
218
+ }
219
+ if (withMouseMovement) {
220
+ // Move mouse to element
221
+ const element = await page.$(selector);
222
+ if (element) {
223
+ const box = await element.boundingBox();
224
+ if (box) {
225
+ // Don't click exactly in center (humans are imperfect)
226
+ const offsetX = randomFloat(-box.width * 0.2, box.width * 0.2);
227
+ const offsetY = randomFloat(-box.height * 0.2, box.height * 0.2);
228
+ const targetX = box.x + box.width / 2 + offsetX;
229
+ const targetY = box.y + box.height / 2 + offsetY;
230
+ await randomMouseMovement(page, targetX, targetY);
231
+ }
232
+ }
233
+ }
234
+ // Small pause before clicking
235
+ await randomDelay(100, 300);
236
+ // Click
237
+ await page.click(selector);
238
+ // Small pause after clicking
239
+ await randomDelay(150, 400);
240
+ }
241
+ // ============================================================================
242
+ // Smooth Scrolling
243
+ // ============================================================================
244
+ /**
245
+ * Scroll the page smoothly like a human
246
+ * Uses multiple small steps for smooth animation
247
+ *
248
+ * @param page Playwright page instance
249
+ * @param amount Scroll amount in pixels (default: random 100-400)
250
+ * @param direction Scroll direction ("down" or "up")
251
+ */
252
+ export async function smoothScroll(page, amount, direction = "down") {
253
+ amount = amount ?? randomInt(100, 400);
254
+ amount = Math.abs(amount);
255
+ if (direction === "up") {
256
+ amount = -amount;
257
+ }
258
+ if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
259
+ await page.evaluate((scrollAmount) => {
260
+ // @ts-expect-error - window exists in browser context
261
+ window.scrollBy({ top: scrollAmount, behavior: "auto" });
262
+ }, amount);
263
+ return;
264
+ }
265
+ // Scroll in multiple small steps for smoothness
266
+ const steps = randomInt(8, 15);
267
+ const stepAmount = amount / steps;
268
+ for (let i = 0; i < steps; i++) {
269
+ await page.evaluate((step) => {
270
+ // @ts-expect-error - window exists in browser context
271
+ window.scrollBy({ top: step, behavior: "smooth" });
272
+ }, stepAmount);
273
+ await sleep(randomFloat(20, 50));
274
+ }
275
+ // Pause after scrolling (humans look at content)
276
+ await randomDelay(300, 800);
277
+ }
278
+ // ============================================================================
279
+ // Reading Simulation
280
+ // ============================================================================
281
+ /**
282
+ * Pause as if reading text, based on length
283
+ * Calculates realistic reading time based on text length and WPM
284
+ *
285
+ * @param textLength Number of characters to "read"
286
+ * @param wpm Reading speed in words per minute (default: random 200-250)
287
+ */
288
+ export async function readingPause(textLength, wpm) {
289
+ if (!CONFIG.stealthEnabled || !CONFIG.stealthRandomDelays) {
290
+ return;
291
+ }
292
+ wpm = wpm ?? randomInt(200, 250);
293
+ // Calculate reading time
294
+ // Average word length ~5 characters
295
+ const wordCount = textLength / 5;
296
+ const minutes = wordCount / wpm;
297
+ let seconds = minutes * 60;
298
+ // Add some randomness (humans don't read at constant speed)
299
+ seconds *= randomFloat(0.8, 1.2);
300
+ // Cap at reasonable maximum (3 seconds)
301
+ seconds = Math.min(seconds, 3.0);
302
+ await sleep(seconds * 1000);
303
+ }
304
+ // ============================================================================
305
+ // Random Mouse Jitter
306
+ // ============================================================================
307
+ /**
308
+ * Add small random mouse movements to simulate natural fidgeting
309
+ *
310
+ * @param page Playwright page instance
311
+ * @param iterations Number of small movements (default: 3)
312
+ */
313
+ export async function randomMouseJitter(page, iterations = 3) {
314
+ if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
315
+ return;
316
+ }
317
+ const viewport = page.viewportSize() || CONFIG.viewport;
318
+ for (let i = 0; i < iterations; i++) {
319
+ const targetX = randomInt(0, viewport.width);
320
+ const targetY = randomInt(0, viewport.height);
321
+ await page.mouse.move(targetX, targetY, { steps: randomInt(2, 4) });
322
+ await sleep(randomFloat(100, 300));
323
+ }
324
+ }
325
+ // ============================================================================
326
+ // Hover Element
327
+ // ============================================================================
328
+ /**
329
+ * Hover over an element with realistic mouse movement
330
+ *
331
+ * @param page Playwright page instance
332
+ * @param selector CSS selector of element to hover
333
+ */
334
+ export async function hoverElement(page, selector) {
335
+ if (!CONFIG.stealthEnabled || !CONFIG.stealthMouseMovements) {
336
+ await page.hover(selector);
337
+ return;
338
+ }
339
+ const element = await page.$(selector);
340
+ if (element) {
341
+ const box = await element.boundingBox();
342
+ if (box) {
343
+ // Move to center of element
344
+ const targetX = box.x + box.width / 2;
345
+ const targetY = box.y + box.height / 2;
346
+ await randomMouseMovement(page, targetX, targetY);
347
+ await page.hover(selector);
348
+ await randomDelay(200, 500);
349
+ }
350
+ }
351
+ }
352
+ // ============================================================================
353
+ // Simulate Reading Page
354
+ // ============================================================================
355
+ /**
356
+ * Simulate reading a page with scrolling and pauses
357
+ * Adds realistic behavior of scrolling and reading content
358
+ *
359
+ * @param page Playwright page instance
360
+ */
361
+ export async function simulateReadingPage(page) {
362
+ if (!CONFIG.stealthEnabled || !CONFIG.stealthRandomDelays) {
363
+ return;
364
+ }
365
+ // Random number of scroll actions
366
+ const scrollCount = randomInt(1, 3);
367
+ for (let i = 0; i < scrollCount; i++) {
368
+ // Scroll down
369
+ await smoothScroll(page, undefined, "down");
370
+ // "Read" the visible content
371
+ await randomDelay(800, 1500);
372
+ // Sometimes scroll up a bit (humans do this)
373
+ if (Math.random() < 0.3) {
374
+ await smoothScroll(page, randomInt(50, 150), "up");
375
+ await randomDelay(400, 800);
376
+ }
377
+ }
378
+ }
379
+ // ============================================================================
380
+ // Exports
381
+ // ============================================================================
382
+ export default {
383
+ sleep,
384
+ randomInt,
385
+ randomFloat,
386
+ randomChar,
387
+ gaussian,
388
+ randomDelay,
389
+ humanType,
390
+ randomMouseMovement,
391
+ realisticClick,
392
+ smoothScroll,
393
+ readingPause,
394
+ randomMouseJitter,
395
+ hoverElement,
396
+ simulateReadingPage,
397
+ };
398
+ //# sourceMappingURL=stealth-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stealth-utils.js","sourceRoot":"","sources":["../../src/utils/stealth-utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "notebooklm-mcp-ultimate",
3
+ "version": "2.2.1",
4
+ "description": "Ultimate NotebookLM MCP with 44 tools: Q&A, content generation, audio studio, source management, and research",
5
+ "type": "module",
6
+ "bin": {
7
+ "notebooklm-mcp": "dist/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "postbuild": "chmod +x dist/index.js",
12
+ "dev": "tsx watch src/index.ts",
13
+ "lint": "eslint src/",
14
+ "typecheck": "tsc --noEmit",
15
+ "test": "echo \"No tests yet\" && exit 0",
16
+ "prepare": "npm run build",
17
+ "discover-rpc": "tsx scripts/discover-rpc-ids.ts"
18
+ },
19
+ "keywords": [
20
+ "mcp",
21
+ "notebooklm",
22
+ "gemini",
23
+ "ai",
24
+ "claude",
25
+ "ultimate",
26
+ "content-generation",
27
+ "audio-studio"
28
+ ],
29
+ "author": "kabuto-png (fork of notebooklm-mcp by Gérôme Dexheimer)",
30
+ "license": "MIT",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+https://github.com/kabuto-png/notebooklm-mcp-ultimate.git"
34
+ },
35
+ "homepage": "https://github.com/kabuto-png/notebooklm-mcp-ultimate#readme",
36
+ "bugs": {
37
+ "url": "https://github.com/kabuto-png/notebooklm-mcp-ultimate/issues"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "README.md",
42
+ "LICENSE"
43
+ ],
44
+ "dependencies": {
45
+ "@modelcontextprotocol/sdk": "^1.0.0",
46
+ "dotenv": "^16.4.0",
47
+ "env-paths": "^3.0.0",
48
+ "globby": "^14.1.0",
49
+ "patchright": "^1.48.2",
50
+ "zod": "^3.22.0"
51
+ },
52
+ "devDependencies": {
53
+ "@eslint/js": "^10.0.1",
54
+ "@types/node": "^20.11.0",
55
+ "eslint": "^10.1.0",
56
+ "tsx": "^4.7.0",
57
+ "typescript": "^5.3.3",
58
+ "typescript-eslint": "^8.57.2"
59
+ },
60
+ "engines": {
61
+ "node": ">=18.0.0"
62
+ }
63
+ }