puppeteer-browser-agent
Version:
Puppeteer browser agent for use in AI agent systems
39 lines (34 loc) • 1.08 kB
text/typescript
import type { ElementHandle } from "puppeteer";
import { ElementAction } from "./element-action";
import { sectionOutline } from "./definitions/section-outline";
// returns the page outline from the title and top header-like elements
export class SectionOutlineAction extends ElementAction {
taskName = "section_outline";
definition = sectionOutline;
get maxSectionTextSize() {
return this.fnArgs.maxTextSize || 200;
}
get headersSelector() {
return "h1,h2,h3,h4,h5,h6,.title,.header";
}
async execute() {
const title = await this.page?.title();
const headers = await this.page?.$$(this.headersSelector);
if (!headers) {
return;
}
const results: any[] = [{ title }];
for (const header of headers) {
const headerTitle = await this.getContentFor(header);
const headerElem = await this.handleToElement(header)
const text = await this.getRelevantTextBeforeNextHeader(headerElem);
const result = {
header: headerTitle,
text,
};
results.push(result);
}
const message = JSON.stringify(results);
this.addToMessage(message);
}
}