browser-use 0.0.1 → 0.1.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 (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +761 -0
  3. package/dist/agent/cloud-events.d.ts +264 -0
  4. package/dist/agent/cloud-events.js +318 -0
  5. package/dist/agent/gif.d.ts +15 -0
  6. package/dist/agent/gif.js +215 -0
  7. package/dist/agent/index.d.ts +8 -0
  8. package/dist/agent/index.js +8 -0
  9. package/dist/agent/message-manager/service.d.ts +30 -0
  10. package/dist/agent/message-manager/service.js +208 -0
  11. package/dist/agent/message-manager/utils.d.ts +2 -0
  12. package/dist/agent/message-manager/utils.js +41 -0
  13. package/dist/agent/message-manager/views.d.ts +26 -0
  14. package/dist/agent/message-manager/views.js +73 -0
  15. package/dist/agent/prompts.d.ts +52 -0
  16. package/dist/agent/prompts.js +259 -0
  17. package/dist/agent/service.d.ts +290 -0
  18. package/dist/agent/service.js +2200 -0
  19. package/dist/agent/views.d.ts +741 -0
  20. package/dist/agent/views.js +537 -0
  21. package/dist/browser/browser.d.ts +7 -0
  22. package/dist/browser/browser.js +5 -0
  23. package/dist/browser/context.d.ts +8 -0
  24. package/dist/browser/context.js +4 -0
  25. package/dist/browser/dvd-screensaver.d.ts +101 -0
  26. package/dist/browser/dvd-screensaver.js +270 -0
  27. package/dist/browser/extensions.d.ts +63 -0
  28. package/dist/browser/extensions.js +359 -0
  29. package/dist/browser/index.d.ts +10 -0
  30. package/dist/browser/index.js +9 -0
  31. package/dist/browser/playwright-manager.d.ts +47 -0
  32. package/dist/browser/playwright-manager.js +146 -0
  33. package/dist/browser/profile.d.ts +196 -0
  34. package/dist/browser/profile.js +815 -0
  35. package/dist/browser/session.d.ts +505 -0
  36. package/dist/browser/session.js +3409 -0
  37. package/dist/browser/types.d.ts +1184 -0
  38. package/dist/browser/types.js +1 -0
  39. package/dist/browser/utils.d.ts +1 -0
  40. package/dist/browser/utils.js +19 -0
  41. package/dist/browser/views.d.ts +78 -0
  42. package/dist/browser/views.js +72 -0
  43. package/dist/cli.d.ts +2 -0
  44. package/dist/cli.js +44 -0
  45. package/dist/config.d.ts +108 -0
  46. package/dist/config.js +430 -0
  47. package/dist/controller/index.d.ts +3 -0
  48. package/dist/controller/index.js +3 -0
  49. package/dist/controller/registry/index.d.ts +2 -0
  50. package/dist/controller/registry/index.js +2 -0
  51. package/dist/controller/registry/service.d.ts +45 -0
  52. package/dist/controller/registry/service.js +184 -0
  53. package/dist/controller/registry/views.d.ts +55 -0
  54. package/dist/controller/registry/views.js +174 -0
  55. package/dist/controller/service.d.ts +49 -0
  56. package/dist/controller/service.js +1176 -0
  57. package/dist/controller/views.d.ts +241 -0
  58. package/dist/controller/views.js +88 -0
  59. package/dist/dom/clickable-element-processor/service.d.ts +11 -0
  60. package/dist/dom/clickable-element-processor/service.js +60 -0
  61. package/dist/dom/dom_tree/index.js +1400 -0
  62. package/dist/dom/history-tree-processor/service.d.ts +14 -0
  63. package/dist/dom/history-tree-processor/service.js +75 -0
  64. package/dist/dom/history-tree-processor/view.d.ts +54 -0
  65. package/dist/dom/history-tree-processor/view.js +56 -0
  66. package/dist/dom/playground/extraction.d.ts +19 -0
  67. package/dist/dom/playground/extraction.js +187 -0
  68. package/dist/dom/playground/process-dom.d.ts +1 -0
  69. package/dist/dom/playground/process-dom.js +5 -0
  70. package/dist/dom/playground/test-accessibility.d.ts +44 -0
  71. package/dist/dom/playground/test-accessibility.js +111 -0
  72. package/dist/dom/service.d.ts +19 -0
  73. package/dist/dom/service.js +227 -0
  74. package/dist/dom/utils.d.ts +1 -0
  75. package/dist/dom/utils.js +6 -0
  76. package/dist/dom/views.d.ts +61 -0
  77. package/dist/dom/views.js +247 -0
  78. package/dist/event-bus.d.ts +11 -0
  79. package/dist/event-bus.js +19 -0
  80. package/dist/exceptions.d.ts +10 -0
  81. package/dist/exceptions.js +22 -0
  82. package/dist/filesystem/file-system.d.ts +68 -0
  83. package/dist/filesystem/file-system.js +412 -0
  84. package/dist/filesystem/index.d.ts +1 -0
  85. package/dist/filesystem/index.js +1 -0
  86. package/dist/index.d.ts +31 -0
  87. package/dist/index.js +33 -0
  88. package/dist/integrations/gmail/actions.d.ts +12 -0
  89. package/dist/integrations/gmail/actions.js +113 -0
  90. package/dist/integrations/gmail/index.d.ts +2 -0
  91. package/dist/integrations/gmail/index.js +2 -0
  92. package/dist/integrations/gmail/service.d.ts +61 -0
  93. package/dist/integrations/gmail/service.js +260 -0
  94. package/dist/llm/anthropic/chat.d.ts +28 -0
  95. package/dist/llm/anthropic/chat.js +126 -0
  96. package/dist/llm/anthropic/index.d.ts +2 -0
  97. package/dist/llm/anthropic/index.js +2 -0
  98. package/dist/llm/anthropic/serializer.d.ts +68 -0
  99. package/dist/llm/anthropic/serializer.js +285 -0
  100. package/dist/llm/aws/chat-anthropic.d.ts +61 -0
  101. package/dist/llm/aws/chat-anthropic.js +176 -0
  102. package/dist/llm/aws/chat-bedrock.d.ts +15 -0
  103. package/dist/llm/aws/chat-bedrock.js +80 -0
  104. package/dist/llm/aws/index.d.ts +3 -0
  105. package/dist/llm/aws/index.js +3 -0
  106. package/dist/llm/aws/serializer.d.ts +5 -0
  107. package/dist/llm/aws/serializer.js +68 -0
  108. package/dist/llm/azure/chat.d.ts +15 -0
  109. package/dist/llm/azure/chat.js +83 -0
  110. package/dist/llm/azure/index.d.ts +1 -0
  111. package/dist/llm/azure/index.js +1 -0
  112. package/dist/llm/base.d.ts +16 -0
  113. package/dist/llm/base.js +1 -0
  114. package/dist/llm/deepseek/chat.d.ts +15 -0
  115. package/dist/llm/deepseek/chat.js +51 -0
  116. package/dist/llm/deepseek/index.d.ts +2 -0
  117. package/dist/llm/deepseek/index.js +2 -0
  118. package/dist/llm/deepseek/serializer.d.ts +6 -0
  119. package/dist/llm/deepseek/serializer.js +57 -0
  120. package/dist/llm/exceptions.d.ts +10 -0
  121. package/dist/llm/exceptions.js +18 -0
  122. package/dist/llm/google/chat.d.ts +20 -0
  123. package/dist/llm/google/chat.js +144 -0
  124. package/dist/llm/google/index.d.ts +2 -0
  125. package/dist/llm/google/index.js +2 -0
  126. package/dist/llm/google/serializer.d.ts +6 -0
  127. package/dist/llm/google/serializer.js +64 -0
  128. package/dist/llm/groq/chat.d.ts +15 -0
  129. package/dist/llm/groq/chat.js +52 -0
  130. package/dist/llm/groq/index.d.ts +3 -0
  131. package/dist/llm/groq/index.js +3 -0
  132. package/dist/llm/groq/parser.d.ts +32 -0
  133. package/dist/llm/groq/parser.js +189 -0
  134. package/dist/llm/groq/serializer.d.ts +6 -0
  135. package/dist/llm/groq/serializer.js +56 -0
  136. package/dist/llm/messages.d.ts +77 -0
  137. package/dist/llm/messages.js +157 -0
  138. package/dist/llm/ollama/chat.d.ts +15 -0
  139. package/dist/llm/ollama/chat.js +77 -0
  140. package/dist/llm/ollama/index.d.ts +2 -0
  141. package/dist/llm/ollama/index.js +2 -0
  142. package/dist/llm/ollama/serializer.d.ts +6 -0
  143. package/dist/llm/ollama/serializer.js +53 -0
  144. package/dist/llm/openai/chat.d.ts +38 -0
  145. package/dist/llm/openai/chat.js +174 -0
  146. package/dist/llm/openai/index.d.ts +3 -0
  147. package/dist/llm/openai/index.js +3 -0
  148. package/dist/llm/openai/like.d.ts +17 -0
  149. package/dist/llm/openai/like.js +19 -0
  150. package/dist/llm/openai/serializer.d.ts +6 -0
  151. package/dist/llm/openai/serializer.js +57 -0
  152. package/dist/llm/openrouter/chat.d.ts +15 -0
  153. package/dist/llm/openrouter/chat.js +74 -0
  154. package/dist/llm/openrouter/index.d.ts +2 -0
  155. package/dist/llm/openrouter/index.js +2 -0
  156. package/dist/llm/openrouter/serializer.d.ts +3 -0
  157. package/dist/llm/openrouter/serializer.js +3 -0
  158. package/dist/llm/schema.d.ts +6 -0
  159. package/dist/llm/schema.js +77 -0
  160. package/dist/llm/views.d.ts +15 -0
  161. package/dist/llm/views.js +12 -0
  162. package/dist/logging-config.d.ts +25 -0
  163. package/dist/logging-config.js +89 -0
  164. package/dist/mcp/client.d.ts +142 -0
  165. package/dist/mcp/client.js +638 -0
  166. package/dist/mcp/controller.d.ts +6 -0
  167. package/dist/mcp/controller.js +38 -0
  168. package/dist/mcp/index.d.ts +3 -0
  169. package/dist/mcp/index.js +3 -0
  170. package/dist/mcp/server.d.ts +134 -0
  171. package/dist/mcp/server.js +759 -0
  172. package/dist/observability-decorators.d.ts +158 -0
  173. package/dist/observability-decorators.js +286 -0
  174. package/dist/observability.d.ts +23 -0
  175. package/dist/observability.js +58 -0
  176. package/dist/screenshots/index.d.ts +1 -0
  177. package/dist/screenshots/index.js +1 -0
  178. package/dist/screenshots/service.d.ts +6 -0
  179. package/dist/screenshots/service.js +28 -0
  180. package/dist/sync/auth.d.ts +27 -0
  181. package/dist/sync/auth.js +205 -0
  182. package/dist/sync/index.d.ts +2 -0
  183. package/dist/sync/index.js +2 -0
  184. package/dist/sync/service.d.ts +21 -0
  185. package/dist/sync/service.js +146 -0
  186. package/dist/telemetry/index.d.ts +2 -0
  187. package/dist/telemetry/index.js +2 -0
  188. package/dist/telemetry/service.d.ts +12 -0
  189. package/dist/telemetry/service.js +85 -0
  190. package/dist/telemetry/views.d.ts +112 -0
  191. package/dist/telemetry/views.js +112 -0
  192. package/dist/tokens/index.d.ts +2 -0
  193. package/dist/tokens/index.js +2 -0
  194. package/dist/tokens/service.d.ts +35 -0
  195. package/dist/tokens/service.js +423 -0
  196. package/dist/tokens/views.d.ts +58 -0
  197. package/dist/tokens/views.js +1 -0
  198. package/dist/utils.d.ts +128 -0
  199. package/dist/utils.js +529 -0
  200. package/package.json +94 -5
@@ -0,0 +1,89 @@
1
+ const LEVEL_PRIORITY = {
2
+ debug: 10,
3
+ info: 20,
4
+ result: 25,
5
+ warning: 30,
6
+ error: 40,
7
+ };
8
+ let configured = false;
9
+ let globalLevel = process.env.BROWSER_USE_LOGGING_LEVEL || 'info';
10
+ let outputStream = process.stderr;
11
+ const formatMessage = (level, name, message) => {
12
+ if (level === 'result') {
13
+ return message;
14
+ }
15
+ const paddedLevel = level.toUpperCase().padEnd(7, ' ');
16
+ return `${paddedLevel} [${name}] ${message}`;
17
+ };
18
+ export class Logger {
19
+ name;
20
+ constructor(name) {
21
+ this.name = name;
22
+ }
23
+ shouldLog(level) {
24
+ return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[globalLevel];
25
+ }
26
+ get level() {
27
+ return globalLevel;
28
+ }
29
+ emit(level, message, ...args) {
30
+ if (!this.shouldLog(level)) {
31
+ return;
32
+ }
33
+ const formatted = formatMessage(level, this.name, message);
34
+ const payload = args.length
35
+ ? `${formatted} ${args.map((arg) => (typeof arg === 'string' ? arg : JSON.stringify(arg))).join(' ')}`
36
+ : formatted;
37
+ if ('write' in outputStream) {
38
+ outputStream.write(`${payload}\n`);
39
+ }
40
+ else {
41
+ switch (level) {
42
+ case 'error':
43
+ console.error(payload);
44
+ break;
45
+ case 'warning':
46
+ console.warn(payload);
47
+ break;
48
+ default:
49
+ console.log(payload);
50
+ }
51
+ }
52
+ }
53
+ debug(message, ...args) {
54
+ this.emit('debug', message, ...args);
55
+ }
56
+ info(message, ...args) {
57
+ this.emit('info', message, ...args);
58
+ }
59
+ result(message, ...args) {
60
+ this.emit('result', message, ...args);
61
+ }
62
+ warning(message, ...args) {
63
+ this.emit('warning', message, ...args);
64
+ }
65
+ // Alias for compatibility
66
+ warn(message, ...args) {
67
+ this.warning(message, ...args);
68
+ }
69
+ error(message, ...args) {
70
+ this.emit('error', message, ...args);
71
+ }
72
+ child(suffix) {
73
+ return new Logger(`${this.name}.${suffix}`);
74
+ }
75
+ }
76
+ export const createLogger = (name) => new Logger(name);
77
+ export const setupLogging = (options = {}) => {
78
+ if (configured && !options.forceSetup) {
79
+ return createLogger('browser_use');
80
+ }
81
+ globalLevel =
82
+ options.logLevel ||
83
+ process.env.BROWSER_USE_LOGGING_LEVEL ||
84
+ 'info';
85
+ outputStream = options.stream || process.stderr;
86
+ configured = true;
87
+ return createLogger('browser_use');
88
+ };
89
+ export const logger = createLogger('browser_use');
@@ -0,0 +1,142 @@
1
+ /**
2
+ * MCP (Model Context Protocol) client integration for browser-use.
3
+ *
4
+ * This module provides integration between external MCP servers and browser-use's action registry.
5
+ * MCP tools are dynamically discovered and registered as browser-use actions.
6
+ *
7
+ * Example usage:
8
+ * import { Controller } from './controller/service.js';
9
+ * import { MCPClient } from './mcp/client.js';
10
+ *
11
+ * const controller = new Controller();
12
+ *
13
+ * // Connect to an MCP server
14
+ * const mcpClient = new MCPClient(
15
+ * 'my-server',
16
+ * 'npx',
17
+ * ['@mycompany/mcp-server@latest']
18
+ * );
19
+ *
20
+ * // Register all MCP tools as browser-use actions
21
+ * await mcpClient.registerToController(controller);
22
+ *
23
+ * // Now use with Agent as normal - MCP tools are available as actions
24
+ */
25
+ import { type Tool, type Prompt } from '@modelcontextprotocol/sdk/types.js';
26
+ import type { Controller } from '../controller/service.js';
27
+ export interface MCPClientOptions {
28
+ /** Maximum number of connection retry attempts (default: 3) */
29
+ maxRetries?: number;
30
+ /** Connection timeout in seconds (default: 30) */
31
+ connectionTimeout?: number;
32
+ /** Tool call timeout in seconds (default: 60) */
33
+ toolCallTimeout?: number;
34
+ /** Enable auto-reconnect on connection loss (default: true) */
35
+ autoReconnect?: boolean;
36
+ /** Health check interval in seconds (default: 30, 0 = disabled) */
37
+ healthCheckInterval?: number;
38
+ }
39
+ export declare class MCPClient {
40
+ private client;
41
+ private command;
42
+ private args;
43
+ private env?;
44
+ private serverName;
45
+ private _tools;
46
+ private _prompts;
47
+ private _registeredActions;
48
+ private _connected;
49
+ private _connecting;
50
+ private _toolCallCount;
51
+ private _errorCount;
52
+ private _lastConnectTime?;
53
+ private _lastHealthCheck?;
54
+ private _healthCheckInterval?;
55
+ private maxRetries;
56
+ private connectionTimeout;
57
+ private toolCallTimeout;
58
+ private autoReconnect;
59
+ private healthCheckIntervalSeconds;
60
+ constructor(serverName: string, command: string, args?: string[], env?: Record<string, string>, options?: MCPClientOptions);
61
+ /**
62
+ * Connect to the MCP server and discover available tools
63
+ */
64
+ connect(timeout?: number): Promise<void>;
65
+ private _connectWithTimeout;
66
+ /**
67
+ * Disconnect from the MCP server
68
+ */
69
+ disconnect(): Promise<void>;
70
+ /**
71
+ * List all available tools from the MCP server
72
+ */
73
+ listTools(): Promise<Tool[]>;
74
+ /**
75
+ * Call a tool on the MCP server
76
+ */
77
+ callTool(name: string, args: any): Promise<any>;
78
+ /**
79
+ * Register MCP tools as actions in the browser-use controller
80
+ *
81
+ * @param controller - Browser-use controller to register actions to
82
+ * @param toolFilter - Optional list of tool names to register (undefined = all tools)
83
+ * @param prefix - Optional prefix to add to action names (e.g., "playwright_")
84
+ */
85
+ registerToController(controller: Controller<any>, toolFilter?: string[], prefix?: string): Promise<void>;
86
+ private _registerToolAsAction;
87
+ private _convertToolSchemaToParamModel;
88
+ private _jsonSchemaToZod;
89
+ private _toJsonSchemaObject;
90
+ private _toLiteralUnion;
91
+ private _isLiteralPrimitive;
92
+ private _applyDefault;
93
+ private _applySchemaMetadata;
94
+ private _formatMcpResult;
95
+ /**
96
+ * List available prompts from the MCP server
97
+ */
98
+ listPrompts(): Promise<Prompt[]>;
99
+ /**
100
+ * Get a prompt with arguments
101
+ */
102
+ getPrompt(name: string, args?: Record<string, string>): Promise<any>;
103
+ /**
104
+ * Start health check monitoring
105
+ */
106
+ private _startHealthCheck;
107
+ /**
108
+ * Stop health check monitoring
109
+ */
110
+ private _stopHealthCheck;
111
+ /**
112
+ * Perform health check by listing tools
113
+ */
114
+ private _performHealthCheck;
115
+ /**
116
+ * Attempt to reconnect to the server
117
+ */
118
+ private _attemptReconnect;
119
+ /**
120
+ * Get client statistics
121
+ */
122
+ getStats(): {
123
+ serverName: string;
124
+ connected: boolean;
125
+ toolsDiscovered: number;
126
+ promptsDiscovered: number;
127
+ toolCallCount: number;
128
+ errorCount: number;
129
+ successRate: number;
130
+ uptime?: number;
131
+ lastHealthCheck?: number;
132
+ };
133
+ /**
134
+ * Check if client is connected
135
+ */
136
+ isConnected(): boolean;
137
+ /**
138
+ * Reset statistics
139
+ */
140
+ resetStats(): void;
141
+ [Symbol.asyncDispose](): Promise<void>;
142
+ }