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.
- package/LICENSE +21 -0
- package/README.md +761 -0
- package/dist/agent/cloud-events.d.ts +264 -0
- package/dist/agent/cloud-events.js +318 -0
- package/dist/agent/gif.d.ts +15 -0
- package/dist/agent/gif.js +215 -0
- package/dist/agent/index.d.ts +8 -0
- package/dist/agent/index.js +8 -0
- package/dist/agent/message-manager/service.d.ts +30 -0
- package/dist/agent/message-manager/service.js +208 -0
- package/dist/agent/message-manager/utils.d.ts +2 -0
- package/dist/agent/message-manager/utils.js +41 -0
- package/dist/agent/message-manager/views.d.ts +26 -0
- package/dist/agent/message-manager/views.js +73 -0
- package/dist/agent/prompts.d.ts +52 -0
- package/dist/agent/prompts.js +259 -0
- package/dist/agent/service.d.ts +290 -0
- package/dist/agent/service.js +2200 -0
- package/dist/agent/views.d.ts +741 -0
- package/dist/agent/views.js +537 -0
- package/dist/browser/browser.d.ts +7 -0
- package/dist/browser/browser.js +5 -0
- package/dist/browser/context.d.ts +8 -0
- package/dist/browser/context.js +4 -0
- package/dist/browser/dvd-screensaver.d.ts +101 -0
- package/dist/browser/dvd-screensaver.js +270 -0
- package/dist/browser/extensions.d.ts +63 -0
- package/dist/browser/extensions.js +359 -0
- package/dist/browser/index.d.ts +10 -0
- package/dist/browser/index.js +9 -0
- package/dist/browser/playwright-manager.d.ts +47 -0
- package/dist/browser/playwright-manager.js +146 -0
- package/dist/browser/profile.d.ts +196 -0
- package/dist/browser/profile.js +815 -0
- package/dist/browser/session.d.ts +505 -0
- package/dist/browser/session.js +3409 -0
- package/dist/browser/types.d.ts +1184 -0
- package/dist/browser/types.js +1 -0
- package/dist/browser/utils.d.ts +1 -0
- package/dist/browser/utils.js +19 -0
- package/dist/browser/views.d.ts +78 -0
- package/dist/browser/views.js +72 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +44 -0
- package/dist/config.d.ts +108 -0
- package/dist/config.js +430 -0
- package/dist/controller/index.d.ts +3 -0
- package/dist/controller/index.js +3 -0
- package/dist/controller/registry/index.d.ts +2 -0
- package/dist/controller/registry/index.js +2 -0
- package/dist/controller/registry/service.d.ts +45 -0
- package/dist/controller/registry/service.js +184 -0
- package/dist/controller/registry/views.d.ts +55 -0
- package/dist/controller/registry/views.js +174 -0
- package/dist/controller/service.d.ts +49 -0
- package/dist/controller/service.js +1176 -0
- package/dist/controller/views.d.ts +241 -0
- package/dist/controller/views.js +88 -0
- package/dist/dom/clickable-element-processor/service.d.ts +11 -0
- package/dist/dom/clickable-element-processor/service.js +60 -0
- package/dist/dom/dom_tree/index.js +1400 -0
- package/dist/dom/history-tree-processor/service.d.ts +14 -0
- package/dist/dom/history-tree-processor/service.js +75 -0
- package/dist/dom/history-tree-processor/view.d.ts +54 -0
- package/dist/dom/history-tree-processor/view.js +56 -0
- package/dist/dom/playground/extraction.d.ts +19 -0
- package/dist/dom/playground/extraction.js +187 -0
- package/dist/dom/playground/process-dom.d.ts +1 -0
- package/dist/dom/playground/process-dom.js +5 -0
- package/dist/dom/playground/test-accessibility.d.ts +44 -0
- package/dist/dom/playground/test-accessibility.js +111 -0
- package/dist/dom/service.d.ts +19 -0
- package/dist/dom/service.js +227 -0
- package/dist/dom/utils.d.ts +1 -0
- package/dist/dom/utils.js +6 -0
- package/dist/dom/views.d.ts +61 -0
- package/dist/dom/views.js +247 -0
- package/dist/event-bus.d.ts +11 -0
- package/dist/event-bus.js +19 -0
- package/dist/exceptions.d.ts +10 -0
- package/dist/exceptions.js +22 -0
- package/dist/filesystem/file-system.d.ts +68 -0
- package/dist/filesystem/file-system.js +412 -0
- package/dist/filesystem/index.d.ts +1 -0
- package/dist/filesystem/index.js +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +33 -0
- package/dist/integrations/gmail/actions.d.ts +12 -0
- package/dist/integrations/gmail/actions.js +113 -0
- package/dist/integrations/gmail/index.d.ts +2 -0
- package/dist/integrations/gmail/index.js +2 -0
- package/dist/integrations/gmail/service.d.ts +61 -0
- package/dist/integrations/gmail/service.js +260 -0
- package/dist/llm/anthropic/chat.d.ts +28 -0
- package/dist/llm/anthropic/chat.js +126 -0
- package/dist/llm/anthropic/index.d.ts +2 -0
- package/dist/llm/anthropic/index.js +2 -0
- package/dist/llm/anthropic/serializer.d.ts +68 -0
- package/dist/llm/anthropic/serializer.js +285 -0
- package/dist/llm/aws/chat-anthropic.d.ts +61 -0
- package/dist/llm/aws/chat-anthropic.js +176 -0
- package/dist/llm/aws/chat-bedrock.d.ts +15 -0
- package/dist/llm/aws/chat-bedrock.js +80 -0
- package/dist/llm/aws/index.d.ts +3 -0
- package/dist/llm/aws/index.js +3 -0
- package/dist/llm/aws/serializer.d.ts +5 -0
- package/dist/llm/aws/serializer.js +68 -0
- package/dist/llm/azure/chat.d.ts +15 -0
- package/dist/llm/azure/chat.js +83 -0
- package/dist/llm/azure/index.d.ts +1 -0
- package/dist/llm/azure/index.js +1 -0
- package/dist/llm/base.d.ts +16 -0
- package/dist/llm/base.js +1 -0
- package/dist/llm/deepseek/chat.d.ts +15 -0
- package/dist/llm/deepseek/chat.js +51 -0
- package/dist/llm/deepseek/index.d.ts +2 -0
- package/dist/llm/deepseek/index.js +2 -0
- package/dist/llm/deepseek/serializer.d.ts +6 -0
- package/dist/llm/deepseek/serializer.js +57 -0
- package/dist/llm/exceptions.d.ts +10 -0
- package/dist/llm/exceptions.js +18 -0
- package/dist/llm/google/chat.d.ts +20 -0
- package/dist/llm/google/chat.js +144 -0
- package/dist/llm/google/index.d.ts +2 -0
- package/dist/llm/google/index.js +2 -0
- package/dist/llm/google/serializer.d.ts +6 -0
- package/dist/llm/google/serializer.js +64 -0
- package/dist/llm/groq/chat.d.ts +15 -0
- package/dist/llm/groq/chat.js +52 -0
- package/dist/llm/groq/index.d.ts +3 -0
- package/dist/llm/groq/index.js +3 -0
- package/dist/llm/groq/parser.d.ts +32 -0
- package/dist/llm/groq/parser.js +189 -0
- package/dist/llm/groq/serializer.d.ts +6 -0
- package/dist/llm/groq/serializer.js +56 -0
- package/dist/llm/messages.d.ts +77 -0
- package/dist/llm/messages.js +157 -0
- package/dist/llm/ollama/chat.d.ts +15 -0
- package/dist/llm/ollama/chat.js +77 -0
- package/dist/llm/ollama/index.d.ts +2 -0
- package/dist/llm/ollama/index.js +2 -0
- package/dist/llm/ollama/serializer.d.ts +6 -0
- package/dist/llm/ollama/serializer.js +53 -0
- package/dist/llm/openai/chat.d.ts +38 -0
- package/dist/llm/openai/chat.js +174 -0
- package/dist/llm/openai/index.d.ts +3 -0
- package/dist/llm/openai/index.js +3 -0
- package/dist/llm/openai/like.d.ts +17 -0
- package/dist/llm/openai/like.js +19 -0
- package/dist/llm/openai/serializer.d.ts +6 -0
- package/dist/llm/openai/serializer.js +57 -0
- package/dist/llm/openrouter/chat.d.ts +15 -0
- package/dist/llm/openrouter/chat.js +74 -0
- package/dist/llm/openrouter/index.d.ts +2 -0
- package/dist/llm/openrouter/index.js +2 -0
- package/dist/llm/openrouter/serializer.d.ts +3 -0
- package/dist/llm/openrouter/serializer.js +3 -0
- package/dist/llm/schema.d.ts +6 -0
- package/dist/llm/schema.js +77 -0
- package/dist/llm/views.d.ts +15 -0
- package/dist/llm/views.js +12 -0
- package/dist/logging-config.d.ts +25 -0
- package/dist/logging-config.js +89 -0
- package/dist/mcp/client.d.ts +142 -0
- package/dist/mcp/client.js +638 -0
- package/dist/mcp/controller.d.ts +6 -0
- package/dist/mcp/controller.js +38 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.js +3 -0
- package/dist/mcp/server.d.ts +134 -0
- package/dist/mcp/server.js +759 -0
- package/dist/observability-decorators.d.ts +158 -0
- package/dist/observability-decorators.js +286 -0
- package/dist/observability.d.ts +23 -0
- package/dist/observability.js +58 -0
- package/dist/screenshots/index.d.ts +1 -0
- package/dist/screenshots/index.js +1 -0
- package/dist/screenshots/service.d.ts +6 -0
- package/dist/screenshots/service.js +28 -0
- package/dist/sync/auth.d.ts +27 -0
- package/dist/sync/auth.js +205 -0
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.js +2 -0
- package/dist/sync/service.d.ts +21 -0
- package/dist/sync/service.js +146 -0
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/telemetry/index.js +2 -0
- package/dist/telemetry/service.d.ts +12 -0
- package/dist/telemetry/service.js +85 -0
- package/dist/telemetry/views.d.ts +112 -0
- package/dist/telemetry/views.js +112 -0
- package/dist/tokens/index.d.ts +2 -0
- package/dist/tokens/index.js +2 -0
- package/dist/tokens/service.d.ts +35 -0
- package/dist/tokens/service.js +423 -0
- package/dist/tokens/views.d.ts +58 -0
- package/dist/tokens/views.js +1 -0
- package/dist/utils.d.ts +128 -0
- package/dist/utils.js +529 -0
- 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
|
+
}
|