@agent-browser-io/browser 0.1.0 → 0.2.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 (77) hide show
  1. package/README.md +70 -0
  2. package/bin/agent-browser-cli.cjs +2 -0
  3. package/bin/agent-browser-mcp.cjs +2 -0
  4. package/bin/index.cjs +54 -0
  5. package/dist/cjs/ai-sdk/createBrowserTools.d.ts +58 -0
  6. package/dist/cjs/ai-sdk/createBrowserTools.d.ts.map +1 -0
  7. package/dist/cjs/ai-sdk/createBrowserTools.js +192 -0
  8. package/dist/cjs/ai-sdk/createBrowserTools.js.map +1 -0
  9. package/dist/cjs/cli/cli.d.ts +6 -0
  10. package/dist/cjs/cli/cli.d.ts.map +1 -0
  11. package/dist/cjs/cli/cli.js +149 -0
  12. package/dist/cjs/cli/cli.js.map +1 -0
  13. package/dist/cjs/core/agent-browser/agent-browser.d.ts +51 -0
  14. package/dist/cjs/core/agent-browser/agent-browser.d.ts.map +1 -0
  15. package/dist/cjs/core/agent-browser/agent-browser.js +80 -0
  16. package/dist/cjs/core/agent-browser/agent-browser.js.map +1 -0
  17. package/dist/cjs/core/agent-browser/normalize-script.d.ts +3 -0
  18. package/dist/cjs/core/agent-browser/normalize-script.d.ts.map +1 -0
  19. package/dist/cjs/core/agent-browser/normalize-script.js +531 -0
  20. package/dist/cjs/core/agent-browser/normalize-script.js.map +1 -0
  21. package/dist/cjs/core/browser-backend/browser-backend.d.ts +23 -0
  22. package/dist/cjs/core/browser-backend/browser-backend.d.ts.map +1 -0
  23. package/dist/cjs/core/browser-backend/browser-backend.js +6 -0
  24. package/dist/cjs/core/browser-backend/browser-backend.js.map +1 -0
  25. package/dist/cjs/core/browser-backend/index.d.ts +3 -0
  26. package/dist/cjs/core/browser-backend/index.d.ts.map +1 -0
  27. package/dist/cjs/core/browser-backend/index.js +6 -0
  28. package/dist/cjs/core/browser-backend/index.js.map +1 -0
  29. package/dist/cjs/core/browser-backend/playwright-browser-backend.d.ts +27 -0
  30. package/dist/cjs/core/browser-backend/playwright-browser-backend.d.ts.map +1 -0
  31. package/dist/cjs/core/browser-backend/playwright-browser-backend.js +86 -0
  32. package/dist/cjs/core/browser-backend/playwright-browser-backend.js.map +1 -0
  33. package/dist/cjs/index.d.ts +5 -0
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/index.js +8 -3
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/mcp/server.d.ts +5 -0
  38. package/dist/cjs/mcp/server.d.ts.map +1 -0
  39. package/dist/cjs/mcp/server.js +284 -0
  40. package/dist/cjs/mcp/server.js.map +1 -0
  41. package/dist/esm/ai-sdk/createBrowserTools.d.ts +58 -0
  42. package/dist/esm/ai-sdk/createBrowserTools.d.ts.map +1 -0
  43. package/dist/esm/ai-sdk/createBrowserTools.js +189 -0
  44. package/dist/esm/ai-sdk/createBrowserTools.js.map +1 -0
  45. package/dist/esm/cli/cli.d.ts +6 -0
  46. package/dist/esm/cli/cli.d.ts.map +1 -0
  47. package/dist/esm/cli/cli.js +114 -0
  48. package/dist/esm/cli/cli.js.map +1 -0
  49. package/dist/esm/core/agent-browser/agent-browser.d.ts +51 -0
  50. package/dist/esm/core/agent-browser/agent-browser.d.ts.map +1 -0
  51. package/dist/esm/core/agent-browser/agent-browser.js +76 -0
  52. package/dist/esm/core/agent-browser/agent-browser.js.map +1 -0
  53. package/dist/esm/core/agent-browser/normalize-script.d.ts +3 -0
  54. package/dist/esm/core/agent-browser/normalize-script.d.ts.map +1 -0
  55. package/dist/esm/core/agent-browser/normalize-script.js +528 -0
  56. package/dist/esm/core/agent-browser/normalize-script.js.map +1 -0
  57. package/dist/esm/core/browser-backend/browser-backend.d.ts +23 -0
  58. package/dist/esm/core/browser-backend/browser-backend.d.ts.map +1 -0
  59. package/dist/esm/core/browser-backend/browser-backend.js +5 -0
  60. package/dist/esm/core/browser-backend/browser-backend.js.map +1 -0
  61. package/dist/esm/core/browser-backend/index.d.ts +3 -0
  62. package/dist/esm/core/browser-backend/index.d.ts.map +1 -0
  63. package/dist/esm/core/browser-backend/index.js +2 -0
  64. package/dist/esm/core/browser-backend/index.js.map +1 -0
  65. package/dist/esm/core/browser-backend/playwright-browser-backend.d.ts +27 -0
  66. package/dist/esm/core/browser-backend/playwright-browser-backend.d.ts.map +1 -0
  67. package/dist/esm/core/browser-backend/playwright-browser-backend.js +82 -0
  68. package/dist/esm/core/browser-backend/playwright-browser-backend.js.map +1 -0
  69. package/dist/esm/index.d.ts +5 -0
  70. package/dist/esm/index.d.ts.map +1 -1
  71. package/dist/esm/index.js +4 -2
  72. package/dist/esm/index.js.map +1 -1
  73. package/dist/esm/mcp/server.d.ts +5 -0
  74. package/dist/esm/mcp/server.d.ts.map +1 -0
  75. package/dist/esm/mcp/server.js +282 -0
  76. package/dist/esm/mcp/server.js.map +1 -0
  77. package/package.json +14 -5
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ /**
3
+ * Default browser implementation using Playwright
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PlaywrightBrowserBackend = void 0;
7
+ const playwright_1 = require("playwright");
8
+ class PlaywrightBrowserBackend {
9
+ constructor() {
10
+ this.browser = null;
11
+ this.page = null;
12
+ }
13
+ async launch() {
14
+ this.browser = await playwright_1.chromium.launch();
15
+ this.page = await this.browser.newPage();
16
+ }
17
+ async navigate(url) {
18
+ await this.ensurePage();
19
+ await this.page.goto(url);
20
+ }
21
+ async click(selector) {
22
+ await this.ensurePage();
23
+ await this.page.click(selector);
24
+ }
25
+ async type(selector, text) {
26
+ await this.ensurePage();
27
+ await this.page.fill(selector, text);
28
+ }
29
+ async evaluate(script) {
30
+ await this.ensurePage();
31
+ return this.page.evaluate(script);
32
+ }
33
+ async ensurePage() {
34
+ if (!this.page) {
35
+ await this.launch();
36
+ }
37
+ }
38
+ async dblclick(selector) {
39
+ await this.ensurePage();
40
+ await this.page.dblclick(selector);
41
+ }
42
+ async fill(selector, text) {
43
+ await this.ensurePage();
44
+ await this.page.fill(selector, text);
45
+ }
46
+ async press(key) {
47
+ await this.ensurePage();
48
+ await this.page.keyboard.press(key);
49
+ }
50
+ async hover(selector) {
51
+ await this.ensurePage();
52
+ await this.page.hover(selector);
53
+ }
54
+ async select(selector, value) {
55
+ await this.ensurePage();
56
+ await this.page.selectOption(selector, value);
57
+ }
58
+ async check(selector) {
59
+ await this.ensurePage();
60
+ await this.page.check(selector);
61
+ }
62
+ async uncheck(selector) {
63
+ await this.ensurePage();
64
+ await this.page.uncheck(selector);
65
+ }
66
+ async scroll(direction, pixels = 100) {
67
+ await this.ensurePage();
68
+ const dx = direction === 'left' ? -pixels : direction === 'right' ? pixels : 0;
69
+ const dy = direction === 'up' ? -pixels : direction === 'down' ? pixels : 0;
70
+ await this.page.mouse.wheel(dx, dy);
71
+ }
72
+ async screenshot(path, options) {
73
+ await this.ensurePage();
74
+ const buffer = await this.page.screenshot({ path, fullPage: options?.fullPage });
75
+ return path ? undefined : buffer;
76
+ }
77
+ async close() {
78
+ if (this.browser) {
79
+ await this.browser.close();
80
+ this.browser = null;
81
+ this.page = null;
82
+ }
83
+ }
84
+ }
85
+ exports.PlaywrightBrowserBackend = PlaywrightBrowserBackend;
86
+ //# sourceMappingURL=playwright-browser-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playwright-browser-backend.js","sourceRoot":"","sources":["../../../../src/core/browser-backend/playwright-browser-backend.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,9 @@
3
3
  * Browser automation and control for agent-browser-io
4
4
  */
5
5
  export declare const VERSION = "0.1.0";
6
+ export { createBrowserTools } from "./ai-sdk/createBrowserTools.js";
7
+ export type { IAgentBrowser } from "./core/agent-browser/agent-browser.js";
8
+ export { AgentBrowser } from "./core/agent-browser/agent-browser.js";
9
+ export type { IBrowserBackend } from "./core/browser-backend/browser-backend.js";
10
+ export { DefaultBrowserBackend } from "./core/browser-backend/index.js";
6
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,YAAY,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -4,7 +4,12 @@
4
4
  * Browser automation and control for agent-browser-io
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.VERSION = void 0;
8
- exports.VERSION = '0.1.0';
9
- console.log('Hi, first commit here :) Thank you for checking out stranger!');
7
+ exports.DefaultBrowserBackend = exports.AgentBrowser = exports.createBrowserTools = exports.VERSION = void 0;
8
+ exports.VERSION = "0.1.0";
9
+ var createBrowserTools_js_1 = require("./ai-sdk/createBrowserTools.js");
10
+ Object.defineProperty(exports, "createBrowserTools", { enumerable: true, get: function () { return createBrowserTools_js_1.createBrowserTools; } });
11
+ var agent_browser_js_1 = require("./core/agent-browser/agent-browser.js");
12
+ Object.defineProperty(exports, "AgentBrowser", { enumerable: true, get: function () { return agent_browser_js_1.AgentBrowser; } });
13
+ var index_js_1 = require("./core/browser-backend/index.js");
14
+ Object.defineProperty(exports, "DefaultBrowserBackend", { enumerable: true, get: function () { return index_js_1.DefaultBrowserBackend; } });
10
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEU,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEU,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B,wEAAoE;AAA3D,2HAAA,kBAAkB,OAAA;AAE3B,0EAAqE;AAA5D,gHAAA,YAAY,OAAA;AAErB,4DAAwE;AAA/D,iHAAA,qBAAqB,OAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * MCP server that exposes AgentBrowser as tools over stdio.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+ /**
3
+ * MCP server that exposes AgentBrowser as tools over stdio.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const zod_1 = require("zod");
7
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
8
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
9
+ const agent_browser_1 = require("../core/agent-browser/agent-browser");
10
+ const index_1 = require("../core/browser-backend/index");
11
+ const backend = new index_1.DefaultBrowserBackend();
12
+ const browser = new agent_browser_1.AgentBrowser(backend);
13
+ let launched = false;
14
+ async function ensureLaunched() {
15
+ if (!launched) {
16
+ await browser.launch();
17
+ launched = true;
18
+ }
19
+ }
20
+ function toolResult(text) {
21
+ return { content: [{ type: "text", text }] };
22
+ }
23
+ function toolError(err) {
24
+ const message = err instanceof Error ? err.message : String(err);
25
+ return { content: [{ type: "text", text: `Error: ${message}` }] };
26
+ }
27
+ const server = new mcp_js_1.McpServer({ name: "agent-browser", version: "0.1.0" }, { capabilities: { tools: {} } });
28
+ // agent_browser_launch
29
+ server.registerTool("agent_browser_launch", {
30
+ title: "Launch Browser",
31
+ description: "Launch the browser (idempotent). Call before other actions if the browser is not yet running.",
32
+ inputSchema: zod_1.z.object({}),
33
+ }, async () => {
34
+ try {
35
+ if (!launched) {
36
+ await browser.launch();
37
+ launched = true;
38
+ }
39
+ return toolResult("Browser launched.");
40
+ }
41
+ catch (err) {
42
+ return toolError(err);
43
+ }
44
+ });
45
+ // agent_browser_navigate
46
+ server.registerTool("agent_browser_navigate", {
47
+ title: "Navigate",
48
+ description: "Navigate to a URL and apply the wireframe normalizer.",
49
+ inputSchema: zod_1.z.object({ url: zod_1.z.string().describe("URL to open") }),
50
+ }, async ({ url }) => {
51
+ try {
52
+ await ensureLaunched();
53
+ await browser.navigate(url);
54
+ return toolResult(`Navigated to ${url}`);
55
+ }
56
+ catch (err) {
57
+ return toolError(err);
58
+ }
59
+ });
60
+ // agent_browser_get_wireframe
61
+ server.registerTool("agent_browser_get_wireframe", {
62
+ title: "Get Wireframe",
63
+ description: "Return the ASCII wireframe of the current page. Use ref IDs from this output for click, type, fill, etc.",
64
+ inputSchema: zod_1.z.object({}),
65
+ }, async () => {
66
+ try {
67
+ await ensureLaunched();
68
+ const wireframe = await browser.getWireframe();
69
+ return toolResult(wireframe || "(empty wireframe)");
70
+ }
71
+ catch (err) {
72
+ return toolError(err);
73
+ }
74
+ });
75
+ // agent_browser_click
76
+ server.registerTool("agent_browser_click", {
77
+ title: "Click",
78
+ description: "Click the element with the given ref ID (from the wireframe).",
79
+ inputSchema: zod_1.z.object({ ref: zod_1.z.string().describe("Element ref ID from wireframe") }),
80
+ }, async ({ ref }) => {
81
+ try {
82
+ await ensureLaunched();
83
+ await browser.click(ref);
84
+ return toolResult(`Clicked ref ${ref}`);
85
+ }
86
+ catch (err) {
87
+ return toolError(err);
88
+ }
89
+ });
90
+ // agent_browser_type
91
+ server.registerTool("agent_browser_type", {
92
+ title: "Type",
93
+ description: "Type text into the element with the given ref ID.",
94
+ inputSchema: zod_1.z.object({
95
+ ref: zod_1.z.string().describe("Element ref ID from wireframe"),
96
+ text: zod_1.z.string().describe("Text to type"),
97
+ }),
98
+ }, async ({ ref, text }) => {
99
+ try {
100
+ await ensureLaunched();
101
+ await browser.type(ref, text);
102
+ return toolResult(`Typed into ref ${ref}`);
103
+ }
104
+ catch (err) {
105
+ return toolError(err);
106
+ }
107
+ });
108
+ // agent_browser_fill
109
+ server.registerTool("agent_browser_fill", {
110
+ title: "Fill",
111
+ description: "Clear and fill the element (by ref) with the given text.",
112
+ inputSchema: zod_1.z.object({
113
+ ref: zod_1.z.string().describe("Element ref ID from wireframe"),
114
+ text: zod_1.z.string().describe("Text to fill"),
115
+ }),
116
+ }, async ({ ref, text }) => {
117
+ try {
118
+ await ensureLaunched();
119
+ await browser.fill(ref, text);
120
+ return toolResult(`Filled ref ${ref}`);
121
+ }
122
+ catch (err) {
123
+ return toolError(err);
124
+ }
125
+ });
126
+ // agent_browser_dblclick
127
+ server.registerTool("agent_browser_dblclick", {
128
+ title: "Double Click",
129
+ description: "Double-click the element with the given ref ID.",
130
+ inputSchema: zod_1.z.object({ ref: zod_1.z.string().describe("Element ref ID from wireframe") }),
131
+ }, async ({ ref }) => {
132
+ try {
133
+ await ensureLaunched();
134
+ await browser.dblclick(ref);
135
+ return toolResult(`Double-clicked ref ${ref}`);
136
+ }
137
+ catch (err) {
138
+ return toolError(err);
139
+ }
140
+ });
141
+ // agent_browser_hover
142
+ server.registerTool("agent_browser_hover", {
143
+ title: "Hover",
144
+ description: "Hover over the element with the given ref ID.",
145
+ inputSchema: zod_1.z.object({ ref: zod_1.z.string().describe("Element ref ID from wireframe") }),
146
+ }, async ({ ref }) => {
147
+ try {
148
+ await ensureLaunched();
149
+ await browser.hover(ref);
150
+ return toolResult(`Hovered ref ${ref}`);
151
+ }
152
+ catch (err) {
153
+ return toolError(err);
154
+ }
155
+ });
156
+ // agent_browser_press
157
+ server.registerTool("agent_browser_press", {
158
+ title: "Press Key",
159
+ description: "Press a keyboard key (e.g. Enter, Tab, ArrowDown).",
160
+ inputSchema: zod_1.z.object({ key: zod_1.z.string().describe("Key to press") }),
161
+ }, async ({ key }) => {
162
+ try {
163
+ await ensureLaunched();
164
+ await browser.press(key);
165
+ return toolResult(`Pressed key ${key}`);
166
+ }
167
+ catch (err) {
168
+ return toolError(err);
169
+ }
170
+ });
171
+ // agent_browser_select
172
+ server.registerTool("agent_browser_select", {
173
+ title: "Select Option",
174
+ description: "Select an option in a dropdown by ref and value.",
175
+ inputSchema: zod_1.z.object({
176
+ ref: zod_1.z.string().describe("Element ref ID from wireframe"),
177
+ value: zod_1.z.string().describe("Option value to select"),
178
+ }),
179
+ }, async ({ ref, value }) => {
180
+ try {
181
+ await ensureLaunched();
182
+ await browser.select(ref, value);
183
+ return toolResult(`Selected value in ref ${ref}`);
184
+ }
185
+ catch (err) {
186
+ return toolError(err);
187
+ }
188
+ });
189
+ // agent_browser_check
190
+ server.registerTool("agent_browser_check", {
191
+ title: "Check",
192
+ description: "Check the checkbox/radio with the given ref ID.",
193
+ inputSchema: zod_1.z.object({ ref: zod_1.z.string().describe("Element ref ID from wireframe") }),
194
+ }, async ({ ref }) => {
195
+ try {
196
+ await ensureLaunched();
197
+ await browser.check(ref);
198
+ return toolResult(`Checked ref ${ref}`);
199
+ }
200
+ catch (err) {
201
+ return toolError(err);
202
+ }
203
+ });
204
+ // agent_browser_uncheck
205
+ server.registerTool("agent_browser_uncheck", {
206
+ title: "Uncheck",
207
+ description: "Uncheck the checkbox with the given ref ID.",
208
+ inputSchema: zod_1.z.object({ ref: zod_1.z.string().describe("Element ref ID from wireframe") }),
209
+ }, async ({ ref }) => {
210
+ try {
211
+ await ensureLaunched();
212
+ await browser.uncheck(ref);
213
+ return toolResult(`Unchecked ref ${ref}`);
214
+ }
215
+ catch (err) {
216
+ return toolError(err);
217
+ }
218
+ });
219
+ // agent_browser_scroll
220
+ server.registerTool("agent_browser_scroll", {
221
+ title: "Scroll",
222
+ description: "Scroll the page in the given direction.",
223
+ inputSchema: zod_1.z.object({
224
+ direction: zod_1.z.enum(["up", "down", "left", "right"]).describe("Scroll direction"),
225
+ pixels: zod_1.z.number().optional().describe("Pixels to scroll (default 100)"),
226
+ }),
227
+ }, async ({ direction, pixels }) => {
228
+ try {
229
+ await ensureLaunched();
230
+ await browser.scroll(direction, pixels);
231
+ return toolResult(`Scrolled ${direction}`);
232
+ }
233
+ catch (err) {
234
+ return toolError(err);
235
+ }
236
+ });
237
+ // agent_browser_screenshot
238
+ server.registerTool("agent_browser_screenshot", {
239
+ title: "Screenshot",
240
+ description: "Take a screenshot. Returns base64 PNG when path is omitted; otherwise saves to file.",
241
+ inputSchema: zod_1.z.object({
242
+ path: zod_1.z.string().optional().describe("Optional file path to save screenshot"),
243
+ fullPage: zod_1.z.boolean().optional().describe("Capture full scrollable page"),
244
+ }),
245
+ }, async ({ path: filePath, fullPage }) => {
246
+ try {
247
+ await ensureLaunched();
248
+ const result = await browser.screenshot(filePath, { fullPage });
249
+ if (filePath) {
250
+ return toolResult(`Screenshot saved to ${filePath}`);
251
+ }
252
+ const base64 = result instanceof Buffer ? result.toString("base64") : "";
253
+ return toolResult(base64 ? `data:image/png;base64,${base64}` : "(no image)");
254
+ }
255
+ catch (err) {
256
+ return toolError(err);
257
+ }
258
+ });
259
+ // agent_browser_close
260
+ server.registerTool("agent_browser_close", {
261
+ title: "Close Browser",
262
+ description: "Close the browser.",
263
+ inputSchema: zod_1.z.object({}),
264
+ }, async () => {
265
+ try {
266
+ if (launched) {
267
+ await browser.close();
268
+ launched = false;
269
+ }
270
+ return toolResult("Browser closed.");
271
+ }
272
+ catch (err) {
273
+ return toolError(err);
274
+ }
275
+ });
276
+ async function main() {
277
+ const transport = new stdio_js_1.StdioServerTransport();
278
+ await server.connect(transport);
279
+ }
280
+ main().catch((e) => {
281
+ console.error('Fatal:', e);
282
+ process.exit(1);
283
+ });
284
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Vercel AI SDK tools for agent-browser-io.
3
+ * Use with generateText({ tools: createBrowserTools(browser), ... }).
4
+ * Call the launch tool before other actions if the browser is not yet running.
5
+ */
6
+ import type { IAgentBrowser } from "../core/agent-browser/agent-browser.js";
7
+ /**
8
+ * Creates a set of Vercel AI SDK–compatible tools that control the given browser instance.
9
+ * Pass the result to generateText({ tools: createBrowserTools(browser), ... }).
10
+ * The model should call the launch tool first before other actions.
11
+ */
12
+ export declare function createBrowserTools(browser: IAgentBrowser): {
13
+ launch: import("ai").Tool<Record<string, never>, string>;
14
+ navigate: import("ai").Tool<{
15
+ url: string;
16
+ }, string>;
17
+ getWireframe: import("ai").Tool<Record<string, never>, string>;
18
+ click: import("ai").Tool<{
19
+ ref: string;
20
+ }, string>;
21
+ type: import("ai").Tool<{
22
+ ref: string;
23
+ text: string;
24
+ }, string>;
25
+ fill: import("ai").Tool<{
26
+ ref: string;
27
+ text: string;
28
+ }, string>;
29
+ dblclick: import("ai").Tool<{
30
+ ref: string;
31
+ }, string>;
32
+ hover: import("ai").Tool<{
33
+ ref: string;
34
+ }, string>;
35
+ press: import("ai").Tool<{
36
+ key: string;
37
+ }, string>;
38
+ select: import("ai").Tool<{
39
+ ref: string;
40
+ value: string;
41
+ }, string>;
42
+ check: import("ai").Tool<{
43
+ ref: string;
44
+ }, string>;
45
+ uncheck: import("ai").Tool<{
46
+ ref: string;
47
+ }, string>;
48
+ scroll: import("ai").Tool<{
49
+ direction: "up" | "down" | "left" | "right";
50
+ pixels?: number | undefined;
51
+ }, string>;
52
+ screenshot: import("ai").Tool<{
53
+ path?: string | undefined;
54
+ fullPage?: boolean | undefined;
55
+ }, string>;
56
+ close: import("ai").Tool<Record<string, never>, string>;
57
+ };
58
+ //# sourceMappingURL=createBrowserTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createBrowserTools.d.ts","sourceRoot":"","sources":["../../../src/ai-sdk/createBrowserTools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAgB5E;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsLxD"}