@amaster.ai/pi-browser-use 0.1.2-beta.8 → 0.1.2-beta.80
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/README.md +56 -3
- package/dist/analyze-screenshot.d.ts +2 -2
- package/dist/analyze-screenshot.d.ts.map +1 -1
- package/dist/analyze-screenshot.js +23 -10
- package/dist/analyze-screenshot.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +26 -7
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +26 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +16 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +387 -71
- package/dist/index.js.map +1 -1
- package/dist/profile.d.ts +3 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +86 -0
- package/dist/profile.js.map +1 -0
- package/dist/tool-augment.js +1 -1
- package/dist/tool-augment.js.map +1 -1
- package/dist/tool-groups.d.ts +19 -0
- package/dist/tool-groups.d.ts.map +1 -0
- package/dist/tool-groups.js +82 -0
- package/dist/tool-groups.js.map +1 -0
- package/package.json +13 -7
- package/preview.png +0 -0
package/dist/index.js
CHANGED
|
@@ -1,92 +1,268 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
5
|
-
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { isProjectTrusted, loadPiSettings, } from '@amaster.ai/pi-shared/settings';
|
|
6
4
|
import { Type } from 'typebox';
|
|
7
5
|
import { handleAnalyzeScreenshot, VISUAL_SYSTEM_PROMPT, } from './analyze-screenshot.js';
|
|
8
6
|
import { configToArgs, resolveConfig, } from './config.js';
|
|
7
|
+
import { prepareBrowserProfile } from './profile.js';
|
|
9
8
|
import { augmentToolDescription, extractTextContent, postProcessToolResult, } from './tool-augment.js';
|
|
9
|
+
import { buildGroups, CORE_TOOLS, GROUP_SUMMARIES, loadCategoryMap } from './tool-groups.js';
|
|
10
10
|
export { configToArgs, resolveConfig };
|
|
11
11
|
// All upstream tools are re-exported with this prefix to avoid name collisions with other extensions.
|
|
12
12
|
const TOOL_PREFIX = 'browser_';
|
|
13
|
-
// These upstream tools are noisy or slow; skip them during registration.
|
|
14
|
-
const EXCLUDED_TOOLS = new Set([
|
|
15
|
-
'lighthouse_audit',
|
|
16
|
-
'performance_analyze_insight',
|
|
17
|
-
'performance_start_trace',
|
|
18
|
-
'performance_stop_trace',
|
|
19
|
-
'screencast_start',
|
|
20
|
-
'screencast_stop',
|
|
21
|
-
'install_extension',
|
|
22
|
-
'list_extensions',
|
|
23
|
-
'reload_extension',
|
|
24
|
-
'trigger_extension_action',
|
|
25
|
-
'uninstall_extension',
|
|
26
|
-
]);
|
|
27
13
|
const MCP_TIMEOUT_MS = 60_000;
|
|
14
|
+
const MCP_HEALTH_TIMEOUT_MS = 5_000;
|
|
15
|
+
const MCP_HEALTH_CHECK_INTERVAL_MS = 10_000;
|
|
16
|
+
const MCP_STDERR_LIMIT = 4_096;
|
|
17
|
+
const MCP_SYSTEM_ERROR_CODE_PATTERN = /^(?:EACCES|EADDRINUSE|ECONNREFUSED|ECONNRESET|EHOSTUNREACH|ENOENT|ENOTEMPTY|ENOTFOUND|EPERM|ETIMEDOUT)$/;
|
|
18
|
+
const require = createRequire(import.meta.url);
|
|
19
|
+
// Resolved lazily at connect time so extension load does no filesystem work.
|
|
20
|
+
function resolveChromeDevToolsMcpEntrypoint() {
|
|
21
|
+
const packagePath = require.resolve('chrome-devtools-mcp/package.json');
|
|
22
|
+
const pkg = require(packagePath);
|
|
23
|
+
const bin = pkg.bin?.['chrome-devtools-mcp'];
|
|
24
|
+
if (!bin) {
|
|
25
|
+
throw new Error('chrome-devtools-mcp package does not declare its chrome-devtools-mcp binary');
|
|
26
|
+
}
|
|
27
|
+
return join(dirname(packagePath), bin);
|
|
28
|
+
}
|
|
29
|
+
function requestOptions(timeout, signal) {
|
|
30
|
+
return signal ? { signal, timeout } : { timeout };
|
|
31
|
+
}
|
|
32
|
+
function safeMcpSystemErrorCode(value) {
|
|
33
|
+
return typeof value === 'string' && MCP_SYSTEM_ERROR_CODE_PATTERN.test(value) ? value : undefined;
|
|
34
|
+
}
|
|
35
|
+
function summarizeMcpFailure(stderr, errorName, errorCode) {
|
|
36
|
+
const systemError = safeMcpSystemErrorCode(errorCode) ??
|
|
37
|
+
stderr.match(/\b(EACCES|EADDRINUSE|ECONNREFUSED|ECONNRESET|EHOSTUNREACH|ENOENT|ENOTEMPTY|ENOTFOUND|EPERM|ETIMEDOUT)\b/)?.[1];
|
|
38
|
+
if (systemError)
|
|
39
|
+
return `MCP subprocess failed (${systemError}).`;
|
|
40
|
+
if (/could not find (?:chrome|browser)/i.test(stderr)) {
|
|
41
|
+
return 'Chrome executable was not found.';
|
|
42
|
+
}
|
|
43
|
+
if (/failed to launch (?:the )?(?:browser|chrome)/i.test(stderr)) {
|
|
44
|
+
return 'Chrome failed to launch.';
|
|
45
|
+
}
|
|
46
|
+
if (/(?:browser|chrome).+already running|profile.+in use/i.test(stderr)) {
|
|
47
|
+
return 'Chrome profile is already in use.';
|
|
48
|
+
}
|
|
49
|
+
const safeErrorName = /^[A-Za-z][A-Za-z0-9]{0,63}$/.test(errorName) ? errorName : 'UnknownError';
|
|
50
|
+
return `MCP transport failed (${safeErrorName}).`;
|
|
51
|
+
}
|
|
52
|
+
function pageRoutingGuidance(enabled) {
|
|
53
|
+
return enabled
|
|
54
|
+
? {
|
|
55
|
+
promptSnippet: 'Use browser_list_pages first, then pass its numeric pageId.',
|
|
56
|
+
promptGuidelines: [
|
|
57
|
+
'Call browser_list_pages before page-scoped tools to obtain the current numeric pageId.',
|
|
58
|
+
'Pass pageId explicitly instead of relying on shared browser_select_page state.',
|
|
59
|
+
],
|
|
60
|
+
}
|
|
61
|
+
: {};
|
|
62
|
+
}
|
|
28
63
|
/**
|
|
29
64
|
* MCP client that spawns chrome-devtools-mcp as a subprocess and communicates
|
|
30
65
|
* over stdio. Owns the child-process lifecycle: connect() starts it, close() kills it.
|
|
31
66
|
*/
|
|
32
67
|
export class DevToolsClient {
|
|
33
68
|
client = null;
|
|
34
|
-
transport = null;
|
|
35
69
|
config;
|
|
70
|
+
state = 'disconnected';
|
|
71
|
+
connectPromise = null;
|
|
72
|
+
generation = 0;
|
|
73
|
+
hasConnected = false;
|
|
74
|
+
explicitlyClosed = false;
|
|
75
|
+
lastHealthCheckAt = 0;
|
|
36
76
|
constructor(config) {
|
|
37
77
|
this.config = resolveConfig(config);
|
|
38
78
|
}
|
|
39
|
-
|
|
79
|
+
getState() {
|
|
80
|
+
return this.state;
|
|
81
|
+
}
|
|
82
|
+
async connect(signal) {
|
|
83
|
+
if (this.state === 'ready')
|
|
84
|
+
return;
|
|
85
|
+
if (this.connectPromise)
|
|
86
|
+
return this.connectPromise;
|
|
87
|
+
this.explicitlyClosed = false;
|
|
88
|
+
this.connectPromise = this.openConnection(signal);
|
|
89
|
+
try {
|
|
90
|
+
await this.connectPromise;
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
this.connectPromise = null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async openConnection(signal) {
|
|
97
|
+
this.state = this.hasConnected ? 'reconnecting' : 'connecting';
|
|
40
98
|
const args = configToArgs(this.config);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
99
|
+
const generation = ++this.generation;
|
|
100
|
+
let client = null;
|
|
101
|
+
let stderr = '';
|
|
102
|
+
let transportErrorCode;
|
|
103
|
+
try {
|
|
104
|
+
// Imported lazily: the MCP SDK is heavy and only needed once a session actually connects.
|
|
105
|
+
const [{ Client }, { StdioClientTransport }] = await Promise.all([
|
|
106
|
+
import('@modelcontextprotocol/sdk/client/index.js'),
|
|
107
|
+
import('@modelcontextprotocol/sdk/client/stdio.js'),
|
|
108
|
+
]);
|
|
109
|
+
const transport = new StdioClientTransport({
|
|
110
|
+
command: process.env.PI_BROWSER_USE_NODE?.trim() || process.execPath,
|
|
111
|
+
// SDK default env strips display/proxy vars a headful Chrome needs.
|
|
112
|
+
env: process.env,
|
|
113
|
+
args: [resolveChromeDevToolsMcpEntrypoint(), ...args],
|
|
114
|
+
stderr: 'pipe',
|
|
115
|
+
});
|
|
116
|
+
transport.stderr?.on('data', (chunk) => {
|
|
117
|
+
stderr = `${stderr}${String(chunk)}`.slice(-MCP_STDERR_LIMIT);
|
|
118
|
+
});
|
|
119
|
+
client = new Client({ name: 'pi-browser-use', version: '0.1.0' }, { capabilities: {} });
|
|
120
|
+
this.client = client;
|
|
121
|
+
transport.onerror = (error) => {
|
|
122
|
+
if (generation !== this.generation)
|
|
123
|
+
return;
|
|
124
|
+
transportErrorCode = safeMcpSystemErrorCode(error.code);
|
|
125
|
+
console.error(`[pi-browser-use] chrome-devtools-mcp transport error (${transportErrorCode ?? error.name})`);
|
|
126
|
+
void this.disconnectUnhealthyClient(generation);
|
|
127
|
+
};
|
|
128
|
+
transport.onclose = () => this.markDisconnected(generation);
|
|
129
|
+
await client.connect(transport, requestOptions(MCP_TIMEOUT_MS, signal));
|
|
130
|
+
if (generation !== this.generation)
|
|
131
|
+
return;
|
|
132
|
+
this.state = 'ready';
|
|
133
|
+
this.hasConnected = true;
|
|
134
|
+
this.lastHealthCheckAt = Date.now();
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
if (generation === this.generation) {
|
|
138
|
+
++this.generation;
|
|
139
|
+
this.client = null;
|
|
140
|
+
this.state = 'failed';
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
await client?.close();
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// The failed transport may already be closed.
|
|
147
|
+
}
|
|
148
|
+
if (signal?.aborted)
|
|
149
|
+
throw error;
|
|
150
|
+
const errorName = error instanceof Error ? error.name : 'UnknownError';
|
|
151
|
+
const errorCode = error instanceof Error
|
|
152
|
+
? safeMcpSystemErrorCode(error.code)
|
|
153
|
+
: undefined;
|
|
154
|
+
const diagnostic = summarizeMcpFailure(stderr, errorName, transportErrorCode ?? errorCode);
|
|
155
|
+
console.error(`[pi-browser-use] browser connection failed: ${diagnostic}`);
|
|
156
|
+
throw new Error(`Browser connection failed. ${diagnostic}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
markDisconnected(generation) {
|
|
160
|
+
if (generation !== this.generation || this.state === 'closing')
|
|
161
|
+
return;
|
|
162
|
+
++this.generation;
|
|
163
|
+
this.client = null;
|
|
164
|
+
this.state = 'disconnected';
|
|
51
165
|
}
|
|
52
|
-
async
|
|
53
|
-
if (
|
|
166
|
+
async disconnectUnhealthyClient(generation) {
|
|
167
|
+
if (generation !== this.generation || this.state === 'closing')
|
|
168
|
+
return;
|
|
169
|
+
const failedClient = this.client;
|
|
170
|
+
this.markDisconnected(generation);
|
|
171
|
+
if (!failedClient)
|
|
172
|
+
return;
|
|
173
|
+
try {
|
|
174
|
+
await failedClient.close();
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
console.error('[pi-browser-use] failed to close unhealthy MCP client');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async ping(signal) {
|
|
181
|
+
if (this.state !== 'ready' || !this.client)
|
|
182
|
+
return false;
|
|
183
|
+
const generation = this.generation;
|
|
184
|
+
try {
|
|
185
|
+
await this.client.ping(requestOptions(MCP_HEALTH_TIMEOUT_MS, signal));
|
|
186
|
+
if (generation !== this.generation)
|
|
187
|
+
return false;
|
|
188
|
+
this.lastHealthCheckAt = Date.now();
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
if (signal?.aborted)
|
|
193
|
+
throw error;
|
|
194
|
+
await this.disconnectUnhealthyClient(generation);
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async ensureReady(signal) {
|
|
199
|
+
if (this.explicitlyClosed)
|
|
200
|
+
throw new Error('Client not connected');
|
|
201
|
+
if (this.state === 'ready') {
|
|
202
|
+
const healthCheckIsFresh = Date.now() - this.lastHealthCheckAt < MCP_HEALTH_CHECK_INTERVAL_MS;
|
|
203
|
+
if (healthCheckIsFresh || (await this.ping(signal)))
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
await this.connect(signal);
|
|
207
|
+
}
|
|
208
|
+
async listAllTools(signal) {
|
|
209
|
+
await this.ensureReady(signal);
|
|
210
|
+
const client = this.client;
|
|
211
|
+
if (!client)
|
|
54
212
|
throw new Error('Client not connected');
|
|
55
213
|
const allTools = [];
|
|
56
214
|
let cursor;
|
|
57
215
|
do {
|
|
58
|
-
const result = await
|
|
59
|
-
timeout: MCP_TIMEOUT_MS,
|
|
60
|
-
});
|
|
216
|
+
const result = await client.listTools(cursor ? { cursor } : undefined, requestOptions(MCP_TIMEOUT_MS, signal));
|
|
61
217
|
allTools.push(...result.tools);
|
|
62
218
|
cursor = result.nextCursor;
|
|
63
219
|
} while (cursor);
|
|
64
220
|
return allTools;
|
|
65
221
|
}
|
|
66
|
-
async callTool(name, args) {
|
|
67
|
-
|
|
222
|
+
async callTool(name, args, signal) {
|
|
223
|
+
await this.ensureReady(signal);
|
|
224
|
+
const client = this.client;
|
|
225
|
+
if (!client)
|
|
68
226
|
throw new Error('Client not connected');
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
227
|
+
try {
|
|
228
|
+
return (await client.callTool({ name, arguments: args }, undefined, requestOptions(MCP_TIMEOUT_MS, signal)));
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
if (signal?.aborted)
|
|
232
|
+
throw error;
|
|
233
|
+
if (this.state !== 'ready' || this.client !== client) {
|
|
234
|
+
throw new Error('Browser connection lost; retry the tool.');
|
|
235
|
+
}
|
|
236
|
+
const errorName = error instanceof Error ? error.name : 'UnknownError';
|
|
237
|
+
console.error(`[pi-browser-use] upstream tool call failed (${errorName})`);
|
|
238
|
+
throw new Error('Browser tool call failed.');
|
|
239
|
+
}
|
|
72
240
|
}
|
|
73
241
|
async close() {
|
|
74
|
-
if (this.
|
|
75
|
-
|
|
76
|
-
|
|
242
|
+
if (this.explicitlyClosed)
|
|
243
|
+
return;
|
|
244
|
+
this.explicitlyClosed = true;
|
|
245
|
+
this.state = 'closing';
|
|
246
|
+
const client = this.client;
|
|
247
|
+
++this.generation;
|
|
248
|
+
this.client = null;
|
|
249
|
+
try {
|
|
250
|
+
if (client)
|
|
251
|
+
await client.close();
|
|
252
|
+
}
|
|
253
|
+
finally {
|
|
254
|
+
this.state = 'disconnected';
|
|
77
255
|
}
|
|
78
|
-
this.transport = null;
|
|
79
256
|
}
|
|
80
257
|
}
|
|
81
|
-
/** Read
|
|
258
|
+
/** Read pi-browser-use settings, including the project layer only when trusted. */
|
|
82
259
|
function loadConfigFromFile(options) {
|
|
83
260
|
return loadPiSettings('pi-browser-use', {
|
|
84
|
-
agentDir: getAgentDir(),
|
|
85
261
|
...options,
|
|
86
262
|
});
|
|
87
263
|
}
|
|
88
|
-
/** Convert upstream MCP result into pi-agent
|
|
89
|
-
function
|
|
264
|
+
/** Convert upstream MCP result into pi-agent content, applying text post-processing. */
|
|
265
|
+
function toToolContent(result, originalName) {
|
|
90
266
|
const textContent = extractTextContent(result.content);
|
|
91
267
|
const processed = postProcessToolResult(originalName, textContent);
|
|
92
268
|
const content = [];
|
|
@@ -100,6 +276,13 @@ function toTextContent(result, originalName) {
|
|
|
100
276
|
}
|
|
101
277
|
}
|
|
102
278
|
}
|
|
279
|
+
if (result.content) {
|
|
280
|
+
for (const item of result.content) {
|
|
281
|
+
if (item.type === 'image' && item.data) {
|
|
282
|
+
content.push({ type: 'image', data: item.data, mimeType: item.mimeType ?? 'image/png' });
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
103
286
|
if (content.length === 0) {
|
|
104
287
|
content.push({ type: 'text', text: '' });
|
|
105
288
|
}
|
|
@@ -118,41 +301,150 @@ function toTextContent(result, originalName) {
|
|
|
118
301
|
export default function browserUseExtension(pi) {
|
|
119
302
|
let config;
|
|
120
303
|
let client;
|
|
121
|
-
|
|
122
|
-
|
|
304
|
+
const upstreamToolNames = new Set();
|
|
305
|
+
let toolGroups = new Map();
|
|
306
|
+
const TOOLS_META_TOOL = `${TOOL_PREFIX}tools`;
|
|
307
|
+
async function ensureConnected(signal) {
|
|
123
308
|
if (!client)
|
|
124
309
|
throw new Error('browser-use: session not started');
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
310
|
+
await client.ensureReady(signal);
|
|
311
|
+
}
|
|
312
|
+
function formatGroupList() {
|
|
313
|
+
const active = new Set(pi.getActiveTools());
|
|
314
|
+
const lines = ['Browser tool groups:'];
|
|
315
|
+
for (const [name, tools] of toolGroups) {
|
|
316
|
+
const activeCount = tools.filter((tool) => active.has(`${TOOL_PREFIX}${tool}`)).length;
|
|
317
|
+
const suffix = activeCount === 0
|
|
318
|
+
? 'inactive'
|
|
319
|
+
: activeCount === tools.length
|
|
320
|
+
? 'active'
|
|
321
|
+
: `${activeCount}/${tools.length} active`;
|
|
322
|
+
lines.push(`- ${name} (${tools.length} tools, ${suffix}): ${GROUP_SUMMARIES[name] ?? GROUP_SUMMARIES.other}`);
|
|
128
323
|
}
|
|
324
|
+
lines.push(`Activate a group with ${TOOLS_META_TOOL} group=<name> or /browser-tools <name>.`);
|
|
325
|
+
return lines.join('\n');
|
|
326
|
+
}
|
|
327
|
+
function activateGroup(group) {
|
|
328
|
+
const wanted = (toolGroups.get(group) ?? []).map((tool) => `${TOOL_PREFIX}${tool}`);
|
|
329
|
+
const active = pi.getActiveTools();
|
|
330
|
+
const toAdd = wanted.filter((name) => !active.includes(name));
|
|
331
|
+
if (toAdd.length > 0)
|
|
332
|
+
pi.setActiveTools([...active, ...toAdd]);
|
|
333
|
+
return { activated: wanted, alreadyActive: toAdd.length === 0 && wanted.length > 0 };
|
|
334
|
+
}
|
|
335
|
+
function applyToolProfile() {
|
|
336
|
+
if (config?.slim || config?.toolProfile !== 'core')
|
|
337
|
+
return;
|
|
338
|
+
const core = new Set(CORE_TOOLS);
|
|
339
|
+
pi.setActiveTools(pi
|
|
340
|
+
.getActiveTools()
|
|
341
|
+
.filter((name) => !upstreamToolNames.has(name) || core.has(name.slice(TOOL_PREFIX.length))));
|
|
342
|
+
}
|
|
343
|
+
function registerToolGroupSurface() {
|
|
344
|
+
pi.registerTool({
|
|
345
|
+
name: TOOLS_META_TOOL,
|
|
346
|
+
label: TOOLS_META_TOOL,
|
|
347
|
+
description: 'List and activate additional browser tool groups (derived from chrome-devtools-mcp categories: input, navigation, debugging, network, emulation, memory, performance, ...). Call without arguments to list groups and their activation status.',
|
|
348
|
+
parameters: Type.Object({
|
|
349
|
+
group: Type.Optional(Type.String({ description: 'Tool group to activate. Omit to list available groups.' })),
|
|
350
|
+
}),
|
|
351
|
+
promptSnippet: 'List or activate extra browser tool groups when the core tools are insufficient',
|
|
352
|
+
promptGuidelines: [
|
|
353
|
+
`Only the core browser tools are active by default. When a task needs network inspection, console details, emulation, heap snapshots, or performance tracing, call ${TOOLS_META_TOOL} with the matching group first — the group's tools become available on the next turn.`,
|
|
354
|
+
],
|
|
355
|
+
async execute(_toolCallId, params) {
|
|
356
|
+
const group = typeof params.group === 'string' ? params.group : undefined;
|
|
357
|
+
if (!group) {
|
|
358
|
+
return {
|
|
359
|
+
content: [{ type: 'text', text: formatGroupList() }],
|
|
360
|
+
details: undefined,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
if (!toolGroups.has(group)) {
|
|
364
|
+
const available = [...toolGroups.keys()];
|
|
365
|
+
return {
|
|
366
|
+
content: [
|
|
367
|
+
{
|
|
368
|
+
type: 'text',
|
|
369
|
+
text: available.length === 0
|
|
370
|
+
? 'No browser tool groups available — the browser bridge is not connected yet.'
|
|
371
|
+
: `Unknown group "${group}". Available: ${available.join(', ')}`,
|
|
372
|
+
},
|
|
373
|
+
],
|
|
374
|
+
details: undefined,
|
|
375
|
+
isError: true,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
const { activated, alreadyActive } = activateGroup(group);
|
|
379
|
+
return {
|
|
380
|
+
content: [
|
|
381
|
+
{
|
|
382
|
+
type: 'text',
|
|
383
|
+
text: `${alreadyActive ? 'Already active' : 'Activated'} group "${group}" (${activated.length} tools): ${activated.join(', ')}. These tools are available from the next turn.`,
|
|
384
|
+
},
|
|
385
|
+
],
|
|
386
|
+
details: undefined,
|
|
387
|
+
};
|
|
388
|
+
},
|
|
389
|
+
});
|
|
390
|
+
pi.registerCommand('browser-tools', {
|
|
391
|
+
description: 'List or activate browser tool groups',
|
|
392
|
+
getArgumentCompletions: (argumentPrefix) => {
|
|
393
|
+
const prefix = argumentPrefix.trim().toLowerCase();
|
|
394
|
+
return [...toolGroups.keys()]
|
|
395
|
+
.filter((name) => name.startsWith(prefix))
|
|
396
|
+
.map((name) => ({
|
|
397
|
+
value: name,
|
|
398
|
+
label: name,
|
|
399
|
+
description: GROUP_SUMMARIES[name] ?? GROUP_SUMMARIES.other ?? '',
|
|
400
|
+
}));
|
|
401
|
+
},
|
|
402
|
+
async handler(args, ctx) {
|
|
403
|
+
const group = String(args ?? '')
|
|
404
|
+
.trim()
|
|
405
|
+
.toLowerCase();
|
|
406
|
+
if (!group) {
|
|
407
|
+
ctx.ui.notify(formatGroupList(), 'info');
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
if (!toolGroups.has(group)) {
|
|
411
|
+
ctx.ui.notify(`pi-browser-use: unknown group "${group}". Available: ${[...toolGroups.keys()].join(', ') || '(none — browser not connected)'}`, 'warning');
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
const { activated, alreadyActive } = activateGroup(group);
|
|
415
|
+
ctx.ui.notify(`pi-browser-use: ${alreadyActive ? 'already active' : 'activated'} "${group}" (${activated.length} tools).`, 'info');
|
|
416
|
+
},
|
|
417
|
+
});
|
|
129
418
|
}
|
|
130
419
|
async function registerUpstreamTools() {
|
|
131
420
|
await ensureConnected();
|
|
132
421
|
const upstreamTools = await client.listAllTools();
|
|
133
422
|
for (const tool of upstreamTools) {
|
|
134
|
-
if (EXCLUDED_TOOLS.has(tool.name))
|
|
135
|
-
continue;
|
|
136
423
|
const prefixedName = `${TOOL_PREFIX}${tool.name}`;
|
|
137
424
|
const originalName = tool.name;
|
|
425
|
+
upstreamToolNames.add(prefixedName);
|
|
138
426
|
const description = augmentToolDescription(originalName, tool.description ?? '');
|
|
427
|
+
const routingGuidance = pageRoutingGuidance(tool.inputSchema.required?.includes('pageId') ?? false);
|
|
139
428
|
pi.registerTool({
|
|
140
429
|
name: prefixedName,
|
|
141
430
|
label: prefixedName,
|
|
142
431
|
description,
|
|
432
|
+
...routingGuidance,
|
|
143
433
|
parameters: Type.Unsafe(tool.inputSchema),
|
|
144
|
-
async execute(_toolCallId, params,
|
|
145
|
-
await ensureConnected();
|
|
146
|
-
const result = await client.callTool(originalName, params);
|
|
147
|
-
const
|
|
148
|
-
return {
|
|
434
|
+
async execute(_toolCallId, params, signal, _onUpdate, _ctx) {
|
|
435
|
+
await ensureConnected(signal);
|
|
436
|
+
const result = await client.callTool(originalName, params, signal);
|
|
437
|
+
const toolContent = toToolContent(result, originalName);
|
|
438
|
+
return { ...toolContent, details: undefined };
|
|
149
439
|
},
|
|
150
440
|
});
|
|
151
441
|
}
|
|
152
442
|
}
|
|
153
443
|
/** Create a VisionCaller that uses pi-ai's complete() with the model registry. */
|
|
154
444
|
function createPiVisionCaller(visionConfig, ctx) {
|
|
155
|
-
return async (instruction, imageBase64, mimeType) => {
|
|
445
|
+
return async (instruction, imageBase64, mimeType, signal) => {
|
|
446
|
+
// Imported lazily: pi-ai is heavy and only needed when a vision call actually runs.
|
|
447
|
+
const { complete } = await import('@earendil-works/pi-ai/compat');
|
|
156
448
|
const model = ctx.modelRegistry.find(visionConfig.provider, visionConfig.model);
|
|
157
449
|
if (!model) {
|
|
158
450
|
throw new Error(`Vision model "${visionConfig.provider}/${visionConfig.model}" not found in model registry.`);
|
|
@@ -162,13 +454,14 @@ export default function browserUseExtension(pi) {
|
|
|
162
454
|
throw new Error(`Auth failed for vision model: ${auth.error}`);
|
|
163
455
|
}
|
|
164
456
|
const options = {
|
|
165
|
-
temperature: 0,
|
|
166
457
|
maxTokens: 2048,
|
|
167
458
|
};
|
|
168
459
|
if (auth.apiKey)
|
|
169
460
|
options.apiKey = auth.apiKey;
|
|
170
461
|
if (auth.headers)
|
|
171
462
|
options.headers = auth.headers;
|
|
463
|
+
if (signal)
|
|
464
|
+
options.signal = signal;
|
|
172
465
|
const result = await complete(model, {
|
|
173
466
|
systemPrompt: VISUAL_SYSTEM_PROMPT,
|
|
174
467
|
messages: [
|
|
@@ -185,6 +478,9 @@ export default function browserUseExtension(pi) {
|
|
|
185
478
|
},
|
|
186
479
|
],
|
|
187
480
|
}, options);
|
|
481
|
+
if (result.stopReason === 'error') {
|
|
482
|
+
throw new Error(result.errorMessage || 'Vision model request failed');
|
|
483
|
+
}
|
|
188
484
|
return result.content
|
|
189
485
|
.filter((c) => c.type === 'text')
|
|
190
486
|
.map((c) => c.text)
|
|
@@ -192,19 +488,29 @@ export default function browserUseExtension(pi) {
|
|
|
192
488
|
};
|
|
193
489
|
}
|
|
194
490
|
async function registerVisionTool(visionConfig) {
|
|
491
|
+
const routingGuidance = pageRoutingGuidance(config?.experimentalPageIdRouting === true);
|
|
492
|
+
const pageIdParameter = config?.experimentalPageIdRouting
|
|
493
|
+
? {
|
|
494
|
+
pageId: Type.Number({
|
|
495
|
+
description: 'Numeric page ID returned by browser_list_pages.',
|
|
496
|
+
}),
|
|
497
|
+
}
|
|
498
|
+
: {};
|
|
195
499
|
pi.registerTool({
|
|
196
500
|
name: `${TOOL_PREFIX}analyze_screenshot`,
|
|
197
501
|
label: `${TOOL_PREFIX}analyze_screenshot`,
|
|
198
502
|
description: 'Analyze the current page visually using a screenshot. Use when you need to identify elements by visual attributes (color, layout, position) not available in the accessibility tree, or when you need precise pixel coordinates for click_at.',
|
|
503
|
+
...routingGuidance,
|
|
199
504
|
parameters: Type.Object({
|
|
505
|
+
...pageIdParameter,
|
|
200
506
|
instruction: Type.Optional(Type.String({
|
|
201
507
|
description: 'What to identify or analyze visually (e.g., "Find the coordinates of the blue submit button").',
|
|
202
508
|
})),
|
|
203
509
|
}),
|
|
204
|
-
async execute(_toolCallId, params,
|
|
205
|
-
await ensureConnected();
|
|
510
|
+
async execute(_toolCallId, params, signal, _onUpdate, ctx) {
|
|
511
|
+
await ensureConnected(signal);
|
|
206
512
|
const callVision = createPiVisionCaller(visionConfig, ctx);
|
|
207
|
-
const result = await handleAnalyzeScreenshot(client, callVision, params);
|
|
513
|
+
const result = await handleAnalyzeScreenshot(client, callVision, params, signal);
|
|
208
514
|
const content = [];
|
|
209
515
|
if (result.content) {
|
|
210
516
|
for (const item of result.content) {
|
|
@@ -216,23 +522,33 @@ export default function browserUseExtension(pi) {
|
|
|
216
522
|
if (content.length === 0) {
|
|
217
523
|
content.push({ type: 'text', text: '' });
|
|
218
524
|
}
|
|
219
|
-
return
|
|
525
|
+
return result.isError
|
|
526
|
+
? { content, isError: true, details: undefined }
|
|
527
|
+
: { content, details: undefined };
|
|
220
528
|
},
|
|
221
529
|
});
|
|
222
530
|
}
|
|
531
|
+
registerToolGroupSurface();
|
|
223
532
|
pi.on('session_start', async (_event, ctx) => {
|
|
224
|
-
config = resolveConfig(loadConfigFromFile({
|
|
533
|
+
config = resolveConfig(loadConfigFromFile({
|
|
534
|
+
cwd: ctx.cwd,
|
|
535
|
+
projectTrusted: isProjectTrusted(ctx),
|
|
536
|
+
}));
|
|
537
|
+
prepareBrowserProfile(config);
|
|
225
538
|
client = new DevToolsClient(config);
|
|
226
|
-
|
|
539
|
+
upstreamToolNames.clear();
|
|
540
|
+
toolGroups = new Map();
|
|
227
541
|
await registerUpstreamTools();
|
|
542
|
+
toolGroups = buildGroups([...upstreamToolNames].map((name) => name.slice(TOOL_PREFIX.length)), await loadCategoryMap());
|
|
228
543
|
if (config.visionModel) {
|
|
229
544
|
await registerVisionTool(config.visionModel);
|
|
230
545
|
}
|
|
546
|
+
applyToolProfile();
|
|
231
547
|
});
|
|
232
548
|
pi.on('session_shutdown', async () => {
|
|
233
|
-
if (
|
|
549
|
+
if (client) {
|
|
234
550
|
await client.close();
|
|
235
|
-
|
|
551
|
+
client = undefined;
|
|
236
552
|
}
|
|
237
553
|
});
|
|
238
554
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,aAAa,CAAC;AAgFzE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,iBAAiB,SAAsB,GACtC,IAAI,CAYN"}
|