@hyperbrowser/agent
Version:
Hyperbrowsers Web Agent
74 lines (73 loc) • 2.64 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) {
const { thoughts, memory, action } = step.agentOutput;
messages.push({
role: "assistant",
content: `Thoughts: ${thoughts}\nMemory: ${memory}\nAction: ${JSON.stringify(action)}`,
});
const actionResult = step.actionOutput;
messages.push({
role: "user",
content: actionResult.extract
? `${actionResult.message} :\n ${JSON.stringify(actionResult.extract)}`
: actionResult.message,
});
}
}
// Add elements section with DOM tree
messages.push({
role: "user",
content: `=== Elements ===\n${domState.domState}\n`,
});
// Add page screenshot section (only if screenshot is available)
if (screenshot) {
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: `data:image/png;base64,${screenshot}`,
mimeType: "image/png",
},
{
type: "text",
text: `=== Page State ===\nPixels above: ${scrollInfo[0]}\nPixels below: ${scrollInfo[1]}\n`,
},
],
});
}
return messages;
};
exports.buildAgentStepMessages = buildAgentStepMessages;