@amaster.ai/pi-browser-use 0.1.1-beta.0 → 0.1.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.
- package/README.md +22 -6
- package/dist/analyze-screenshot.d.ts +2 -4
- package/dist/analyze-screenshot.d.ts.map +1 -1
- package/dist/analyze-screenshot.js +40 -59
- package/dist/analyze-screenshot.js.map +1 -1
- package/dist/config.d.ts +2 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +23 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -17
- package/dist/index.js.map +1 -1
- package/package.json +20 -3
- package/preview.png +0 -0
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# @amaster.ai/pi-browser-use
|
|
2
2
|
|
|
3
|
+

|
|
4
|
+
|
|
3
5
|
pi-coding-agent extension that wraps [chrome-devtools-mcp](https://github.com/ChromeDevTools/chrome-devtools-mcp), exposing all browser automation tools with a unified `browser_` prefix.
|
|
4
6
|
|
|
5
7
|
## Features
|
|
@@ -29,7 +31,7 @@ Install the package and pi-coding-agent will automatically discover and load the
|
|
|
29
31
|
bun add @amaster.ai/pi-browser-use
|
|
30
32
|
```
|
|
31
33
|
|
|
32
|
-
Configure via
|
|
34
|
+
Configure via `.pi/settings.json` (project-level) or `~/.pi/agent/settings.json` (user-level) under the `"pi-browser-use"` key:
|
|
33
35
|
|
|
34
36
|
```json
|
|
35
37
|
{
|
|
@@ -56,6 +58,22 @@ npx @amaster.ai/pi-browser-use --config path/to/config.json
|
|
|
56
58
|
|
|
57
59
|
## Configuration
|
|
58
60
|
|
|
61
|
+
### Session Mode
|
|
62
|
+
|
|
63
|
+
| Mode | Description |
|
|
64
|
+
|------|-------------|
|
|
65
|
+
| `persistent` (default) | Reuses a shared browser profile at `~/.pi/browser-profile`. Cookies, logins, and extensions persist across sessions. |
|
|
66
|
+
| `isolated` | Launches a fresh ephemeral browser profile each session. No state carried over. |
|
|
67
|
+
| `existing` | Connects to an already-running browser instance (via `browserUrl`, `wsEndpoint`, or auto-discovery). |
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"pi-browser-use": {
|
|
72
|
+
"sessionMode": "persistent"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
59
77
|
### Browser
|
|
60
78
|
|
|
61
79
|
| Option | Type | Default | Description |
|
|
@@ -96,22 +114,20 @@ npx @amaster.ai/pi-browser-use --config path/to/config.json
|
|
|
96
114
|
|
|
97
115
|
### Vision Model (Optional)
|
|
98
116
|
|
|
99
|
-
Enable `browser_analyze_screenshot` by
|
|
117
|
+
Enable `browser_analyze_screenshot` by referencing a model already configured in Pi's model registry (`models.json`):
|
|
100
118
|
|
|
101
119
|
```json
|
|
102
120
|
{
|
|
103
121
|
"pi-browser-use": {
|
|
104
122
|
"visionModel": {
|
|
105
123
|
"provider": "openai",
|
|
106
|
-
"model": "gpt-4o"
|
|
107
|
-
"apiKey": "sk-...",
|
|
108
|
-
"baseUrl": "https://api.openai.com/v1"
|
|
124
|
+
"model": "gpt-4o"
|
|
109
125
|
}
|
|
110
126
|
}
|
|
111
127
|
}
|
|
112
128
|
```
|
|
113
129
|
|
|
114
|
-
|
|
130
|
+
The extension resolves API key, base URL, and headers from the model registry automatically — no need to duplicate credentials here.
|
|
115
131
|
|
|
116
132
|
## Tool Augmentation
|
|
117
133
|
|
|
@@ -6,9 +6,7 @@
|
|
|
6
6
|
* elements by visual attributes (color, layout, coordinates) when the
|
|
7
7
|
* accessibility tree is insufficient.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* - Extension mode: uses pi-ai's complete() via the model registry (no raw fetch)
|
|
11
|
-
* - CLI mode: uses raw fetch to OpenAI-compatible APIs (createFetchVisionCaller)
|
|
9
|
+
* Both extension mode and CLI mode resolve credentials from Pi's model registry.
|
|
12
10
|
*/
|
|
13
11
|
import type { VisionModelConfig } from './config.js';
|
|
14
12
|
import type { DevToolsClient } from './index.js';
|
|
@@ -19,7 +17,7 @@ export declare const VISUAL_SYSTEM_PROMPT = "You are a Visual Analysis Agent. Yo
|
|
|
19
17
|
* Extension mode and CLI mode each provide their own implementation.
|
|
20
18
|
*/
|
|
21
19
|
export type VisionCaller = (instruction: string, imageBase64: string, mimeType: string) => Promise<string>;
|
|
22
|
-
/** Create a VisionCaller
|
|
20
|
+
/** Create a VisionCaller that resolves credentials from Pi's model registry. Used in CLI standalone mode. */
|
|
23
21
|
export declare function createFetchVisionCaller(visionConfig: VisionModelConfig): VisionCaller;
|
|
24
22
|
/**
|
|
25
23
|
* Capture a screenshot via the upstream tool and analyze it with the provided vision caller.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-screenshot.d.ts","sourceRoot":"","sources":["../src/analyze-screenshot.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"analyze-screenshot.d.ts","sourceRoot":"","sources":["../src/analyze-screenshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,mDAAmD;AACnD,eAAO,MAAM,oBAAoB,24BAkBoC,CAAC;AAEtE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,6GAA6G;AAC7G,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,iBAAiB,GAAG,YAAY,CAkDrF;AAMD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAiEhF"}
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* elements by visual attributes (color, layout, coordinates) when the
|
|
7
7
|
* accessibility tree is insufficient.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* - Extension mode: uses pi-ai's complete() via the model registry (no raw fetch)
|
|
11
|
-
* - CLI mode: uses raw fetch to OpenAI-compatible APIs (createFetchVisionCaller)
|
|
9
|
+
* Both extension mode and CLI mode resolve credentials from Pi's model registry.
|
|
12
10
|
*/
|
|
11
|
+
import { complete } from '@earendil-works/pi-ai';
|
|
12
|
+
import { AuthStorage, ModelRegistry } from '@earendil-works/pi-coding-agent';
|
|
13
13
|
/** System prompt for the vision analysis model. */
|
|
14
14
|
export const VISUAL_SYSTEM_PROMPT = `You are a Visual Analysis Agent. You receive a screenshot of a browser page and an instruction.
|
|
15
15
|
|
|
@@ -30,66 +30,47 @@ IMPORTANT:
|
|
|
30
30
|
- You are NOT performing actions — you are only providing visual analysis
|
|
31
31
|
- Include coordinates when possible so the caller can use click_at(x, y)
|
|
32
32
|
- If the element is not visible in the screenshot, say so explicitly`;
|
|
33
|
-
|
|
34
|
-
const envMap = {
|
|
35
|
-
openai: 'OPENAI_API_KEY',
|
|
36
|
-
anthropic: 'ANTHROPIC_API_KEY',
|
|
37
|
-
google: 'GOOGLE_API_KEY',
|
|
38
|
-
};
|
|
39
|
-
const envVar = envMap[provider.toLowerCase()];
|
|
40
|
-
return envVar ? process.env[envVar] : undefined;
|
|
41
|
-
}
|
|
42
|
-
function getDefaultBaseUrl(provider) {
|
|
43
|
-
const urlMap = {
|
|
44
|
-
openai: 'https://api.openai.com/v1',
|
|
45
|
-
anthropic: 'https://api.anthropic.com/v1',
|
|
46
|
-
};
|
|
47
|
-
return urlMap[provider.toLowerCase()] ?? `https://api.${provider}.com/v1`;
|
|
48
|
-
}
|
|
49
|
-
/** Create a VisionCaller backed by raw fetch (OpenAI-compatible API). Used in CLI standalone mode. */
|
|
33
|
+
/** Create a VisionCaller that resolves credentials from Pi's model registry. Used in CLI standalone mode. */
|
|
50
34
|
export function createFetchVisionCaller(visionConfig) {
|
|
35
|
+
const authStorage = AuthStorage.create();
|
|
36
|
+
const registry = ModelRegistry.create(authStorage);
|
|
51
37
|
return async (instruction, imageBase64, mimeType) => {
|
|
52
|
-
const
|
|
53
|
-
if (!
|
|
54
|
-
throw new Error(`
|
|
55
|
-
`Set apiKey in visionModel config or the appropriate environment variable.`);
|
|
38
|
+
const model = registry.find(visionConfig.provider, visionConfig.model);
|
|
39
|
+
if (!model) {
|
|
40
|
+
throw new Error(`Vision model "${visionConfig.provider}/${visionConfig.model}" not found in model registry.`);
|
|
56
41
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
{
|
|
61
|
-
role: 'user',
|
|
62
|
-
content: [
|
|
63
|
-
{
|
|
64
|
-
type: 'text',
|
|
65
|
-
text: `Analyze this screenshot and respond to the following instruction:\n\n${instruction}`,
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
type: 'image_url',
|
|
69
|
-
image_url: { url: `data:${mimeType};base64,${imageBase64}` },
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
},
|
|
73
|
-
];
|
|
74
|
-
const response = await fetch(`${baseUrl}/chat/completions`, {
|
|
75
|
-
method: 'POST',
|
|
76
|
-
headers: {
|
|
77
|
-
'Content-Type': 'application/json',
|
|
78
|
-
Authorization: `Bearer ${apiKey}`,
|
|
79
|
-
},
|
|
80
|
-
body: JSON.stringify({
|
|
81
|
-
model: visionConfig.model,
|
|
82
|
-
messages,
|
|
83
|
-
temperature: 0,
|
|
84
|
-
max_tokens: 2048,
|
|
85
|
-
}),
|
|
86
|
-
});
|
|
87
|
-
if (!response.ok) {
|
|
88
|
-
const body = await response.text();
|
|
89
|
-
throw new Error(`Vision model API error (${response.status}): ${body}`);
|
|
42
|
+
const auth = await registry.getApiKeyAndHeaders(model);
|
|
43
|
+
if (!auth.ok) {
|
|
44
|
+
throw new Error(`Auth failed for vision model: ${auth.error}`);
|
|
90
45
|
}
|
|
91
|
-
const
|
|
92
|
-
|
|
46
|
+
const options = {
|
|
47
|
+
temperature: 0,
|
|
48
|
+
maxTokens: 2048,
|
|
49
|
+
};
|
|
50
|
+
if (auth.apiKey)
|
|
51
|
+
options.apiKey = auth.apiKey;
|
|
52
|
+
if (auth.headers)
|
|
53
|
+
options.headers = auth.headers;
|
|
54
|
+
const result = await complete(model, {
|
|
55
|
+
systemPrompt: VISUAL_SYSTEM_PROMPT,
|
|
56
|
+
messages: [
|
|
57
|
+
{
|
|
58
|
+
role: 'user',
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: 'text',
|
|
62
|
+
text: `Analyze this screenshot and respond to the following instruction:\n\n${instruction}`,
|
|
63
|
+
},
|
|
64
|
+
{ type: 'image', data: imageBase64, mimeType },
|
|
65
|
+
],
|
|
66
|
+
timestamp: Date.now(),
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
}, options);
|
|
70
|
+
return result.content
|
|
71
|
+
.filter((c) => c.type === 'text')
|
|
72
|
+
.map((c) => c.text)
|
|
73
|
+
.join('');
|
|
93
74
|
};
|
|
94
75
|
}
|
|
95
76
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-screenshot.js","sourceRoot":"","sources":["../src/analyze-screenshot.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"analyze-screenshot.js","sourceRoot":"","sources":["../src/analyze-screenshot.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
export interface VisionModelConfig {
|
|
3
3
|
provider: string;
|
|
4
4
|
model: string;
|
|
5
|
-
apiKey?: string;
|
|
6
|
-
baseUrl?: string;
|
|
7
5
|
}
|
|
6
|
+
export type BrowserSessionMode = 'persistent' | 'isolated' | 'existing';
|
|
8
7
|
/** Configuration for the chrome-devtools-mcp upstream process. */
|
|
9
8
|
export interface BrowserUseConfig {
|
|
9
|
+
sessionMode?: BrowserSessionMode;
|
|
10
10
|
headless?: boolean;
|
|
11
11
|
channel?: 'canary' | 'dev' | 'beta' | 'stable';
|
|
12
12
|
browserUrl?: string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAExE,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAiBD,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAsBzE;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CA+B/D"}
|
package/dist/config.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
const DEFAULT_PROFILE_DIR = join(homedir(), '.pi', 'browser-profile');
|
|
1
4
|
const DEFAULTS = {
|
|
5
|
+
sessionMode: 'persistent',
|
|
2
6
|
categoryPerformance: false,
|
|
3
7
|
categoryNetwork: true,
|
|
4
8
|
categoryEmulation: true,
|
|
@@ -11,7 +15,25 @@ const DEFAULTS = {
|
|
|
11
15
|
};
|
|
12
16
|
/** Merge user config over sane defaults. */
|
|
13
17
|
export function resolveConfig(config) {
|
|
14
|
-
|
|
18
|
+
const resolved = { ...DEFAULTS, ...config };
|
|
19
|
+
switch (resolved.sessionMode) {
|
|
20
|
+
case 'existing':
|
|
21
|
+
if (!resolved.autoConnect && !resolved.browserUrl && !resolved.wsEndpoint) {
|
|
22
|
+
resolved.autoConnect = true;
|
|
23
|
+
}
|
|
24
|
+
break;
|
|
25
|
+
case 'isolated':
|
|
26
|
+
if (!resolved.isolated) {
|
|
27
|
+
resolved.isolated = true;
|
|
28
|
+
}
|
|
29
|
+
break;
|
|
30
|
+
default:
|
|
31
|
+
if (!resolved.userDataDir && !resolved.browserUrl && !resolved.wsEndpoint) {
|
|
32
|
+
resolved.userDataDir = DEFAULT_PROFILE_DIR;
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
return resolved;
|
|
15
37
|
}
|
|
16
38
|
/** Convert config into CLI flags for the chrome-devtools-mcp subprocess. */
|
|
17
39
|
export function configToArgs(config) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
|
|
2
2
|
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
-
import { type BrowserUseConfig, configToArgs, resolveConfig, type VisionModelConfig } from './config.js';
|
|
4
|
-
export type { BrowserUseConfig, VisionModelConfig };
|
|
3
|
+
import { type BrowserSessionMode, type BrowserUseConfig, configToArgs, resolveConfig, type VisionModelConfig } from './config.js';
|
|
4
|
+
export type { BrowserSessionMode, BrowserUseConfig, VisionModelConfig };
|
|
5
5
|
export { configToArgs, resolveConfig };
|
|
6
6
|
/**
|
|
7
7
|
* MCP client that spawns chrome-devtools-mcp as a subprocess and communicates
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AAItF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAO/D,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,YAAY,EACZ,aAAa,EACb,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAOrB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAsBvC;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,CAAC,EAAE,gBAAgB;IAI/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBxB,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAgB/B,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QACT,OAAO,CAAC,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IAgBI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B;AA6CD;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA0JlE"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { resolve } from 'node:path';
|
|
1
|
+
import { loadPiSettings } from '@amaster.ai/pi-shared/settings';
|
|
3
2
|
import { complete } from '@earendil-works/pi-ai';
|
|
3
|
+
import { getAgentDir } from '@earendil-works/pi-coding-agent';
|
|
4
4
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
5
5
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
6
6
|
import { Type } from 'typebox';
|
|
@@ -78,17 +78,12 @@ export class DevToolsClient {
|
|
|
78
78
|
this.transport = null;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
/** Read the pi-browser-use section from
|
|
82
|
-
function loadConfigFromFile() {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return (parsed['pi-browser-use'] ?? {});
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
return {};
|
|
91
|
-
}
|
|
81
|
+
/** Read the pi-browser-use section from .pi/settings.json. */
|
|
82
|
+
function loadConfigFromFile(options) {
|
|
83
|
+
return loadPiSettings('pi-browser-use', {
|
|
84
|
+
agentDir: getAgentDir(),
|
|
85
|
+
...options,
|
|
86
|
+
});
|
|
92
87
|
}
|
|
93
88
|
/** Convert upstream MCP result into pi-agent TextContent[], applying post-processing. */
|
|
94
89
|
function toTextContent(result, originalName) {
|
|
@@ -121,10 +116,12 @@ function toTextContent(result, originalName) {
|
|
|
121
116
|
* If visionModel is configured, an additional analyze_screenshot tool is registered.
|
|
122
117
|
*/
|
|
123
118
|
export default function browserUseExtension(pi) {
|
|
124
|
-
|
|
125
|
-
|
|
119
|
+
let config;
|
|
120
|
+
let client;
|
|
126
121
|
let connected = false;
|
|
127
122
|
async function ensureConnected() {
|
|
123
|
+
if (!client)
|
|
124
|
+
throw new Error('browser-use: session not started');
|
|
128
125
|
if (!connected) {
|
|
129
126
|
await client.connect();
|
|
130
127
|
connected = true;
|
|
@@ -145,6 +142,7 @@ export default function browserUseExtension(pi) {
|
|
|
145
142
|
description,
|
|
146
143
|
parameters: Type.Unsafe(tool.inputSchema),
|
|
147
144
|
async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
|
|
145
|
+
await ensureConnected();
|
|
148
146
|
const result = await client.callTool(originalName, params);
|
|
149
147
|
const { content } = toTextContent(result, originalName);
|
|
150
148
|
return { content, details: undefined };
|
|
@@ -222,14 +220,17 @@ export default function browserUseExtension(pi) {
|
|
|
222
220
|
},
|
|
223
221
|
});
|
|
224
222
|
}
|
|
225
|
-
pi.on('session_start', async () => {
|
|
223
|
+
pi.on('session_start', async (_event, ctx) => {
|
|
224
|
+
config = resolveConfig(loadConfigFromFile({ cwd: ctx.cwd }));
|
|
225
|
+
client = new DevToolsClient(config);
|
|
226
|
+
connected = false;
|
|
226
227
|
await registerUpstreamTools();
|
|
227
228
|
if (config.visionModel) {
|
|
228
229
|
await registerVisionTool(config.visionModel);
|
|
229
230
|
}
|
|
230
231
|
});
|
|
231
232
|
pi.on('session_shutdown', async () => {
|
|
232
|
-
if (connected) {
|
|
233
|
+
if (connected && client) {
|
|
233
234
|
await client.close();
|
|
234
235
|
connected = false;
|
|
235
236
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/pi-browser-use",
|
|
3
|
-
"version": "0.1.1
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Pi extension for browser automation via chrome-devtools-mcp with browser_ prefixed tools",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"pi-package",
|
|
7
|
+
"pi",
|
|
8
|
+
"extension",
|
|
9
|
+
"browser",
|
|
10
|
+
"automation",
|
|
11
|
+
"chrome-devtools",
|
|
12
|
+
"mcp"
|
|
13
|
+
],
|
|
5
14
|
"license": "Apache-2.0",
|
|
6
15
|
"type": "module",
|
|
7
16
|
"sideEffects": false,
|
|
@@ -21,8 +30,15 @@
|
|
|
21
30
|
},
|
|
22
31
|
"files": [
|
|
23
32
|
"dist",
|
|
33
|
+
"preview.png",
|
|
24
34
|
"README.md"
|
|
25
35
|
],
|
|
36
|
+
"pi": {
|
|
37
|
+
"image": "https://raw.githubusercontent.com/TGYD-helige/pi/master/packages/pi-browser-use/preview.png",
|
|
38
|
+
"extensions": [
|
|
39
|
+
"./dist/index.js"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
26
42
|
"publishConfig": {
|
|
27
43
|
"access": "public"
|
|
28
44
|
},
|
|
@@ -32,7 +48,8 @@
|
|
|
32
48
|
"directory": "packages/pi-browser-use"
|
|
33
49
|
},
|
|
34
50
|
"dependencies": {
|
|
35
|
-
"@modelcontextprotocol/sdk": "^1.29.0"
|
|
51
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
52
|
+
"@amaster.ai/pi-shared": "0.1.1"
|
|
36
53
|
},
|
|
37
54
|
"peerDependencies": {
|
|
38
55
|
"@earendil-works/pi-ai": ">=0.74.0",
|
package/preview.png
ADDED
|
Binary file
|