@browserbasehq/stagehand 1.0.3 → 1.1.0-alpha.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.
Files changed (44) hide show
  1. package/README.md +10 -5
  2. package/dist/evals/index.eval.js +1075 -0
  3. package/dist/evals/index.eval.js.map +1 -0
  4. package/dist/evals/playground.js +112 -0
  5. package/dist/evals/playground.js.map +1 -0
  6. package/dist/evals/utils.js +52 -0
  7. package/dist/evals/utils.js.map +1 -0
  8. package/dist/examples/2048.js +108 -0
  9. package/dist/examples/2048.js.map +1 -0
  10. package/dist/examples/debugUrl.js +35 -0
  11. package/dist/examples/debugUrl.js.map +1 -0
  12. package/dist/examples/example.js +37 -0
  13. package/dist/examples/example.js.map +1 -0
  14. package/dist/index.d.ts +22 -6
  15. package/dist/index.js +629 -152
  16. package/dist/lib/browserbase.js +56 -0
  17. package/dist/lib/browserbase.js.map +1 -0
  18. package/dist/lib/cache.js +78 -0
  19. package/dist/lib/cache.js.map +1 -0
  20. package/dist/lib/dom/debug.js +119 -0
  21. package/dist/lib/dom/debug.js.map +1 -0
  22. package/dist/lib/dom/index.js +20 -0
  23. package/dist/lib/dom/index.js.map +1 -0
  24. package/dist/lib/dom/process.js +396 -0
  25. package/dist/lib/dom/process.js.map +1 -0
  26. package/dist/lib/dom/utils.js +28 -0
  27. package/dist/lib/dom/utils.js.map +1 -0
  28. package/dist/lib/index.js +978 -0
  29. package/dist/lib/index.js.map +1 -0
  30. package/dist/lib/inference.js +226 -0
  31. package/dist/lib/inference.js.map +1 -0
  32. package/dist/lib/llm/AnthropicClient.js +150 -0
  33. package/dist/lib/llm/AnthropicClient.js.map +1 -0
  34. package/dist/lib/llm/LLMClient.js +12 -0
  35. package/dist/lib/llm/LLMClient.js.map +1 -0
  36. package/dist/lib/llm/LLMProvider.js +34 -0
  37. package/dist/lib/llm/LLMProvider.js.map +1 -0
  38. package/dist/lib/llm/OpenAIClient.js +69 -0
  39. package/dist/lib/llm/OpenAIClient.js.map +1 -0
  40. package/dist/lib/prompt.js +288 -0
  41. package/dist/lib/prompt.js.map +1 -0
  42. package/dist/lib/vision.js +194 -0
  43. package/dist/lib/vision.js.map +1 -0
  44. package/package.json +2 -1
@@ -0,0 +1,396 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.processDom = processDom;
13
+ exports.processAllOfDom = processAllOfDom;
14
+ exports.scrollToHeight = scrollToHeight;
15
+ exports.processElements = processElements;
16
+ function processDom(chunksSeen) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const { chunk, chunksArray } = yield pickChunk(chunksSeen);
19
+ const { outputString, selectorMap } = yield processElements(chunk);
20
+ console.log(`Stagehand (Browser Process): Extracted dom elements:\n${outputString}`);
21
+ return {
22
+ outputString,
23
+ selectorMap,
24
+ chunk,
25
+ chunks: chunksArray,
26
+ };
27
+ });
28
+ }
29
+ function processAllOfDom() {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ console.log("Stagehand (Browser Process): Processing all of DOM");
32
+ const viewportHeight = window.innerHeight;
33
+ const documentHeight = document.documentElement.scrollHeight;
34
+ const totalChunks = Math.ceil(documentHeight / viewportHeight);
35
+ let index = 0;
36
+ const results = [];
37
+ for (let chunk = 0; chunk < totalChunks; chunk++) {
38
+ const result = yield processElements(chunk, true, index);
39
+ results.push(result);
40
+ index += Object.keys(result.selectorMap).length;
41
+ }
42
+ yield scrollToHeight(0);
43
+ const allOutputString = results.map((result) => result.outputString).join("");
44
+ const allSelectorMap = results.reduce((acc, result) => (Object.assign(Object.assign({}, acc), result.selectorMap)), {});
45
+ console.log(`Stagehand (Browser Process): All dom elements: ${allOutputString}`);
46
+ return {
47
+ outputString: allOutputString,
48
+ selectorMap: allSelectorMap,
49
+ };
50
+ });
51
+ }
52
+ function scrollToHeight(height) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ window.scrollTo({ top: height, left: 0, behavior: "smooth" });
55
+ // Wait for scrolling to finish using the scrollend event
56
+ yield new Promise((resolve) => {
57
+ let scrollEndTimer;
58
+ const handleScrollEnd = () => {
59
+ clearTimeout(scrollEndTimer);
60
+ scrollEndTimer = window.setTimeout(() => {
61
+ window.removeEventListener("scroll", handleScrollEnd);
62
+ resolve();
63
+ }, 200);
64
+ };
65
+ window.addEventListener("scroll", handleScrollEnd, { passive: true });
66
+ handleScrollEnd();
67
+ });
68
+ });
69
+ }
70
+ function processElements(chunk_1) {
71
+ return __awaiter(this, arguments, void 0, function* (chunk, scrollToChunk = true, indexOffset = 0) {
72
+ console.time("processElements:total");
73
+ const viewportHeight = window.innerHeight;
74
+ const chunkHeight = viewportHeight * chunk;
75
+ // Calculate the maximum scrollable offset
76
+ const maxScrollTop = document.documentElement.scrollHeight - window.innerHeight;
77
+ // Adjust the offsetTop to not exceed the maximum scrollable offset
78
+ const offsetTop = Math.min(chunkHeight, maxScrollTop);
79
+ if (scrollToChunk) {
80
+ console.time("processElements:scroll");
81
+ yield scrollToHeight(offsetTop);
82
+ console.timeEnd("processElements:scroll");
83
+ }
84
+ const candidateElements = [];
85
+ const DOMQueue = [...document.body.childNodes];
86
+ const xpathCache = new Map();
87
+ console.log("Stagehand (Browser Process): Generating candidate elements");
88
+ console.time("processElements:findCandidates");
89
+ while (DOMQueue.length > 0) {
90
+ const element = DOMQueue.pop();
91
+ let shouldAddElement = false;
92
+ if (element && isElementNode(element)) {
93
+ const childrenCount = element.childNodes.length;
94
+ // Always traverse child nodes
95
+ for (let i = childrenCount - 1; i >= 0; i--) {
96
+ const child = element.childNodes[i];
97
+ DOMQueue.push(child);
98
+ }
99
+ // Check if element is interactive
100
+ if (isInteractiveElement(element)) {
101
+ if (isActive(element) && isVisible(element)) {
102
+ shouldAddElement = true;
103
+ }
104
+ }
105
+ if (isLeafElement(element)) {
106
+ if (isActive(element) && isVisible(element)) {
107
+ shouldAddElement = true;
108
+ }
109
+ }
110
+ }
111
+ if (element && isTextNode(element) && isTextVisible(element)) {
112
+ shouldAddElement = true;
113
+ }
114
+ if (shouldAddElement) {
115
+ candidateElements.push(element);
116
+ }
117
+ }
118
+ console.timeEnd("processElements:findCandidates");
119
+ const selectorMap = {};
120
+ let outputString = "";
121
+ console.log(`Stagehand (Browser Process): Processing candidate elements: ${candidateElements.length}`);
122
+ console.time("processElements:processCandidates");
123
+ candidateElements.forEach((element, index) => {
124
+ var _a, _b;
125
+ let xpath = xpathCache.get(element);
126
+ if (!xpath) {
127
+ xpath = generateXPath(element);
128
+ xpathCache.set(element, xpath);
129
+ }
130
+ if (isTextNode(element)) {
131
+ const textContent = (_a = element.textContent) === null || _a === void 0 ? void 0 : _a.trim();
132
+ if (textContent) {
133
+ outputString += `${index + indexOffset}:${textContent}\n`;
134
+ }
135
+ }
136
+ else if (isElementNode(element)) {
137
+ const tagName = element.tagName.toLowerCase();
138
+ const attributes = collectEssentialAttributes(element);
139
+ const openingTag = `<${tagName}${attributes ? " " + attributes : ""}>`;
140
+ const closingTag = `</${tagName}>`;
141
+ const textContent = ((_b = element.textContent) === null || _b === void 0 ? void 0 : _b.trim()) || "";
142
+ outputString += `${index + indexOffset}:${openingTag}${textContent}${closingTag}\n`;
143
+ }
144
+ selectorMap[index + indexOffset] = xpath;
145
+ });
146
+ console.timeEnd("processElements:processCandidates");
147
+ console.timeEnd("processElements:total");
148
+ return {
149
+ outputString,
150
+ selectorMap,
151
+ };
152
+ });
153
+ }
154
+ /**
155
+ * Collects essential attributes from an element.
156
+ * @param element The DOM element.
157
+ * @returns A string of formatted attributes.
158
+ */
159
+ function collectEssentialAttributes(element) {
160
+ const essentialAttributes = [
161
+ "id",
162
+ "class",
163
+ "href",
164
+ "src",
165
+ "aria-label",
166
+ "aria-name",
167
+ "aria-role",
168
+ "aria-description",
169
+ "aria-expanded",
170
+ "aria-haspopup",
171
+ ];
172
+ const attrs = essentialAttributes
173
+ .map((attr) => {
174
+ const value = element.getAttribute(attr);
175
+ return value ? `${attr}="${value}"` : "";
176
+ })
177
+ .filter((attr) => attr !== "");
178
+ // Collect data- attributes
179
+ Array.from(element.attributes).forEach((attr) => {
180
+ if (attr.name.startsWith("data-")) {
181
+ attrs.push(`${attr.name}="${attr.value}"`);
182
+ }
183
+ });
184
+ return attrs.join(" ");
185
+ }
186
+ window.processDom = processDom;
187
+ window.processAllOfDom = processAllOfDom;
188
+ window.processElements = processElements;
189
+ window.scrollToHeight = scrollToHeight;
190
+ function generateXPath(element) {
191
+ if (isElementNode(element) && element.id) {
192
+ return `//*[@id='${element.id}']`;
193
+ }
194
+ const parts = [];
195
+ while (element && (isTextNode(element) || isElementNode(element))) {
196
+ let index = 0;
197
+ let hasSameTypeSiblings = false;
198
+ const siblings = element.parentElement
199
+ ? Array.from(element.parentElement.childNodes)
200
+ : [];
201
+ for (let i = 0; i < siblings.length; i++) {
202
+ const sibling = siblings[i];
203
+ if (sibling.nodeType === element.nodeType &&
204
+ sibling.nodeName === element.nodeName) {
205
+ index = index + 1;
206
+ hasSameTypeSiblings = true;
207
+ if (sibling.isSameNode(element)) {
208
+ break;
209
+ }
210
+ }
211
+ }
212
+ // text "nodes" are selected differently than elements with xPaths
213
+ if (element.nodeName !== "#text") {
214
+ const tagName = element.nodeName.toLowerCase();
215
+ const pathIndex = hasSameTypeSiblings ? `[${index}]` : "";
216
+ parts.unshift(`${tagName}${pathIndex}`);
217
+ }
218
+ element = element.parentElement;
219
+ }
220
+ return parts.length ? `/${parts.join("/")}` : "";
221
+ }
222
+ const leafElementDenyList = ["SVG", "IFRAME", "SCRIPT", "STYLE", "LINK"];
223
+ const interactiveElementTypes = [
224
+ "A",
225
+ "BUTTON",
226
+ "DETAILS",
227
+ "EMBED",
228
+ "INPUT",
229
+ "LABEL",
230
+ "MENU",
231
+ "MENUITEM",
232
+ "OBJECT",
233
+ "SELECT",
234
+ "TEXTAREA",
235
+ "SUMMARY",
236
+ ];
237
+ const interactiveRoles = [
238
+ "button",
239
+ "menu",
240
+ "menuitem",
241
+ "link",
242
+ "checkbox",
243
+ "radio",
244
+ "slider",
245
+ "tab",
246
+ "tabpanel",
247
+ "textbox",
248
+ "combobox",
249
+ "grid",
250
+ "listbox",
251
+ "option",
252
+ "progressbar",
253
+ "scrollbar",
254
+ "searchbox",
255
+ "switch",
256
+ "tree",
257
+ "treeitem",
258
+ "spinbutton",
259
+ "tooltip",
260
+ ];
261
+ const interactiveAriaRoles = ["menu", "menuitem", "button"];
262
+ function isElementNode(node) {
263
+ return node.nodeType === Node.ELEMENT_NODE;
264
+ }
265
+ function isTextNode(node) {
266
+ var _a;
267
+ // Trim all white space and ensure the text node is non-empty
268
+ const trimmedText = (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().replace(/\s/g, "");
269
+ return node.nodeType === Node.TEXT_NODE && trimmedText !== "";
270
+ }
271
+ /*
272
+ * Checks if an element is visible and therefore relevant for LLMs to consider. We check:
273
+ * - Size
274
+ * - Display properties
275
+ * - Opacity
276
+ * If the element is a child of a previously hidden element, it should not be included, so we don't consider downstream effects of a parent element here
277
+ */
278
+ const isVisible = (element) => {
279
+ const rect = element.getBoundingClientRect();
280
+ // Ensure the element is within the viewport
281
+ if (rect.width === 0 ||
282
+ rect.height === 0 ||
283
+ rect.top < 0 ||
284
+ rect.top > window.innerHeight) {
285
+ return false;
286
+ }
287
+ if (!isTopElement(element, rect)) {
288
+ return false;
289
+ }
290
+ const visible = element.checkVisibility({
291
+ checkOpacity: true,
292
+ checkVisibilityCSS: true,
293
+ });
294
+ return visible;
295
+ };
296
+ const isTextVisible = (element) => {
297
+ const range = document.createRange();
298
+ range.selectNodeContents(element);
299
+ const rect = range.getBoundingClientRect();
300
+ if (rect.width === 0 ||
301
+ rect.height === 0 ||
302
+ rect.top < 0 ||
303
+ rect.top > window.innerHeight) {
304
+ return false;
305
+ }
306
+ const parent = element.parentElement;
307
+ if (!parent) {
308
+ return false;
309
+ }
310
+ if (!isTopElement(parent, rect)) {
311
+ return false;
312
+ }
313
+ const visible = parent.checkVisibility({
314
+ checkOpacity: true,
315
+ checkVisibilityCSS: true,
316
+ });
317
+ return visible;
318
+ };
319
+ function isTopElement(elem, rect) {
320
+ const points = [
321
+ { x: rect.left + rect.width * 0.25, y: rect.top + rect.height * 0.25 },
322
+ { x: rect.left + rect.width * 0.75, y: rect.top + rect.height * 0.25 },
323
+ { x: rect.left + rect.width * 0.25, y: rect.top + rect.height * 0.75 },
324
+ { x: rect.left + rect.width * 0.75, y: rect.top + rect.height * 0.75 },
325
+ { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 },
326
+ ];
327
+ return points.some((point) => {
328
+ const topEl = document.elementFromPoint(point.x, point.y);
329
+ let current = topEl;
330
+ while (current && current !== document.body) {
331
+ if (current.isSameNode(elem)) {
332
+ return true;
333
+ }
334
+ current = current.parentElement;
335
+ }
336
+ return false;
337
+ });
338
+ }
339
+ const isActive = (element) => {
340
+ if (element.hasAttribute("disabled") ||
341
+ element.hasAttribute("hidden") ||
342
+ element.getAttribute("aria-disabled") === "true") {
343
+ return false;
344
+ }
345
+ return true;
346
+ };
347
+ const isInteractiveElement = (element) => {
348
+ const elementType = element.tagName;
349
+ const elementRole = element.getAttribute("role");
350
+ const elementAriaRole = element.getAttribute("aria-role");
351
+ return ((elementType && interactiveElementTypes.includes(elementType)) ||
352
+ (elementRole && interactiveRoles.includes(elementRole)) ||
353
+ (elementAriaRole && interactiveAriaRoles.includes(elementAriaRole)));
354
+ };
355
+ const isLeafElement = (element) => {
356
+ if (element.textContent === "") {
357
+ return false;
358
+ }
359
+ if (element.childNodes.length === 0) {
360
+ return !leafElementDenyList.includes(element.tagName);
361
+ }
362
+ // This case ensures that extra context will be included for simple element nodes that contain only text
363
+ if (element.childNodes.length === 1 && isTextNode(element.childNodes[0])) {
364
+ return true;
365
+ }
366
+ return false;
367
+ };
368
+ function pickChunk(chunksSeen) {
369
+ return __awaiter(this, void 0, void 0, function* () {
370
+ const viewportHeight = window.innerHeight;
371
+ const documentHeight = document.documentElement.scrollHeight;
372
+ const chunks = Math.ceil(documentHeight / viewportHeight);
373
+ const chunksArray = Array.from({ length: chunks }, (_, i) => i);
374
+ const chunksRemaining = chunksArray.filter((chunk) => {
375
+ return !chunksSeen.includes(chunk);
376
+ });
377
+ const currentScrollPosition = window.scrollY;
378
+ const closestChunk = chunksRemaining.reduce((closest, current) => {
379
+ const currentChunkTop = viewportHeight * current;
380
+ const closestChunkTop = viewportHeight * closest;
381
+ return Math.abs(currentScrollPosition - currentChunkTop) <
382
+ Math.abs(currentScrollPosition - closestChunkTop)
383
+ ? current
384
+ : closest;
385
+ }, chunksRemaining[0]);
386
+ const chunk = closestChunk;
387
+ if (chunk === undefined) {
388
+ throw new Error(`No chunks remaining to check: ${chunksRemaining}`);
389
+ }
390
+ return {
391
+ chunk,
392
+ chunksArray,
393
+ };
394
+ });
395
+ }
396
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../lib/dom/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ function waitForDomSettle() {
11
+ return __awaiter(this, void 0, void 0, function* () {
12
+ return new Promise((resolve) => {
13
+ const createTimeout = () => {
14
+ return setTimeout(() => {
15
+ resolve();
16
+ }, 2000);
17
+ };
18
+ let timeout = createTimeout();
19
+ const observer = new MutationObserver(() => {
20
+ clearTimeout(timeout);
21
+ timeout = createTimeout();
22
+ });
23
+ observer.observe(window.document.body, { childList: true, subtree: true });
24
+ });
25
+ });
26
+ }
27
+ window.waitForDomSettle = waitForDomSettle;
28
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/dom/utils.ts"],"names":[],"mappings":";;;;;;;;;AAAA,SAAe,gBAAgB;;QAC7B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,MAAM,aAAa,GAAG,GAAG,EAAE;gBACzB,OAAO,UAAU,CAAC,GAAG,EAAE;oBACrB,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,CAAC;YACF,IAAI,OAAO,GAAG,aAAa,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;gBACzC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,GAAG,aAAa,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAED,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC"}