diff --git a/.changeset/upset-ideas-fall.md b/.changeset/upset-ideas-fall.md new file mode 100644 index 000000000..cf23c9a1e --- /dev/null +++ b/.changeset/upset-ideas-fall.md @@ -0,0 +1,5 @@ +--- +"@browserbasehq/stagehand": patch +--- + +Add pageUrl & timestamp to agent actions diff --git a/lib/handlers/cuaAgentHandler.ts b/lib/handlers/cuaAgentHandler.ts index 00df3cd60..513e23efd 100644 --- a/lib/handlers/cuaAgentHandler.ts +++ b/lib/handlers/cuaAgentHandler.ts @@ -72,6 +72,8 @@ export class CuaAgentHandler { // Set up action handler for any client type this.agentClient.setActionHandler(async (action) => { + action.pageUrl = this.page.url(); + // Default delay between actions (1 second if not specified) const defaultDelay = 1000; // Use specified delay or default @@ -80,6 +82,8 @@ export class CuaAgentHandler { defaultDelay; try { + this.updateClientUrl(); + // Try to inject cursor before each action if enabled if (this.highlightCursor) { try { @@ -95,6 +99,8 @@ export class CuaAgentHandler { // Execute the action await this.executeAction(action); + action.timestamp = Date.now(); + // Add a delay after the action for better visibility await new Promise((resolve) => setTimeout(resolve, waitBetweenActions)); diff --git a/lib/handlers/stagehandAgentHandler.ts b/lib/handlers/stagehandAgentHandler.ts index 1dc49c68f..147615f81 100644 --- a/lib/handlers/stagehandAgentHandler.ts +++ b/lib/handlers/stagehandAgentHandler.ts @@ -54,6 +54,8 @@ export class StagehandAgentHandler { let completed = false; const collectedReasoning: string[] = []; + let currentPageUrl = this.stagehand.page.url(); + this.logger({ category: "agent", message: `Executing agent task: ${options.instruction}`, @@ -184,16 +186,19 @@ export class StagehandAgentHandler { const action: AgentAction = { type: toolCall.toolName, reasoning: event.text || undefined, + pageUrl: currentPageUrl, taskCompleted: toolCall.toolName === "close" ? (args?.success as boolean) : false, + timestamp: Date.now(), ...args, ...getPlaywrightArguments(), }; actions.push(action); } + currentPageUrl = this.stagehand.page.url(); } }, }); diff --git a/types/agent.ts b/types/agent.ts index 0d61e427f..541b66849 100644 --- a/types/agent.ts +++ b/types/agent.ts @@ -17,6 +17,7 @@ export interface AgentAction { // Tool-specific fields timeMs?: number; // wait tool pageText?: string; // ariaTree tool + timestamp?: number; pageUrl?: string; // ariaTree tool instruction?: string; // various tools playwrightArguments?: ObserveResult | null; // act tool