@hyperbrowser/agent
Version:
Hyperbrowsers Web Agent
73 lines (72 loc) • 2.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildAgentStepMessages = void 0;
const utils_1 = require("./utils");
const retry_1 = require("../../utils/retry");
const buildAgentStepMessages = async (baseMessages, steps, task, page, domState, screenshot, variables) => {
const messages = [...baseMessages];
// Add the final goal section
messages.push({
role: "user",
content: `=== Final Goal ===\n${task}\n`,
});
// Add current URL section
messages.push({
role: "user",
content: `=== Current URL ===\n${page.url()}\n`,
});
// Add variables section
messages.push({
role: "user",
content: `=== Variables ===\n${variables.map((v) => `<<${v.key}>> - ${v.description}`).join("\n")}\n`,
});
// Add previous actions section if there are steps
if (steps.length > 0) {
messages.push({
role: "user",
content: "=== Previous Actions ===\n",
});
for (const step of steps) {
messages.push({
role: "ai",
content: JSON.stringify(step.agentOutput),
});
for (const actionOutput of step.actionOutputs) {
messages.push({
role: "user",
content: actionOutput.extract
? `${actionOutput.message} :\n ${JSON.stringify(actionOutput.extract)}`
: actionOutput.message,
});
}
}
}
// Add elements section with DOM tree
messages.push({
role: "user",
content: `=== Elements ===\n${domState.domState}\n`,
});
// Add page screenshot section
const scrollInfo = await (0, retry_1.retry)({ func: () => (0, utils_1.getScrollInfo)(page) });
messages.push({
role: "user",
content: [
{
type: "text",
text: "=== Page Screenshot ===\n",
},
{
type: "image_url",
image_url: {
url: `data:image/png;base64,${screenshot}`,
},
},
{
type: "text",
text: `=== Page State ===\nPixels above: ${scrollInfo[0]}\nPixels below: ${scrollInfo[1]}\n`,
},
],
});
return messages;
};
exports.buildAgentStepMessages = buildAgentStepMessages;