def run(
        self, collection_id: str, video_id: str, timestamp = None, *args, **kwargs
    ) -> AgentResponse:
        """
        Get the image frame for the video at a given timestamp.
        """
        if timestamp is None:
            timestamp = 5

        try:
            self.output_message.actions.append("Generating frame..")
            image_content = ImageContent(agent_name=self.agent_name)
            image_content.status_message = "Extracting frame.."
            self.output_message.content.append(image_content)
            self.output_message.push_update()

            videodb_tool = VideoDBTool(collection_id=collection_id)
            frame_data = videodb_tool.extract_frame(
                video_id=video_id, timestamp=timestamp
            )
            image_content.image = ImageData(**frame_data)
            image_content.status = MsgStatus.success
            image_content.status_message = "Here is your frame."
            self.output_message.publish()

        except Exception as e:
            logger.exception(f"Error in {self.agent_name} agent.")
            image_content.status = MsgStatus.error
            image_content.status_message = "Error in extracting frame."
            self.output_message.publish()
            return AgentResponse(status=AgentStatus.ERROR, message=str(e))

        return AgentResponse(
            status=AgentStatus.SUCCESS,
            message="Frame extracted and displayed to user.",
            data=frame_data,
        )

        Get the image frame for the video at a given timestamp.
        
backend/director/agents/frame.py