Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions examples/get_url.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import asyncio

from narada import Narada
from narada_core.actions.models import parse_action_trace


async def main() -> None:
async with Narada() as narada:
window = await narada.open_and_initialize_browser_window()

await window.go_to_url(url="https://www.google.com", timeout=60)
result = await window.get_url(timeout=30)
print(f"Current URL: {result.url}")


if __name__ == "__main__":
asyncio.run(main())
16 changes: 16 additions & 0 deletions packages/narada-core/src/narada_core/actions/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ class GoToUrlTrace(BaseModel):
description: str


class GetUrlTrace(BaseModel):
step_type: Literal["getUrl"]
url: str
description: str


class PrintTrace(BaseModel):
step_type: Literal["print"]
url: str
Expand Down Expand Up @@ -154,6 +160,7 @@ class GetScreenshotTrace(BaseModel):

ApaStepTrace = Annotated[
GoToUrlTrace
| GetUrlTrace
| PrintTrace
| AgentTrace
| ForLoopTrace
Expand Down Expand Up @@ -484,6 +491,14 @@ class GetScreenshotResponse(BaseModel):
timestamp: str


class GetUrlRequest(BaseModel):
name: Literal["get_url"] = "get_url"


class GetUrlResponse(BaseModel):
url: str


type ExtensionActionRequest = (
AgenticSelectorRequest
| AgenticMouseActionRequest
Expand All @@ -495,6 +510,7 @@ class GetScreenshotResponse(BaseModel):
| GetFullHtmlRequest
| GetSimplifiedHtmlRequest
| GetScreenshotRequest
| GetUrlRequest
)


Expand Down
7 changes: 7 additions & 0 deletions packages/narada-core/src/narada_core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,12 @@ class GoToUrlTrace(TypedDict):
description: str


class GetUrlTrace(TypedDict):
step_type: Literal["getUrl"]
url: str
description: str


class PrintTrace(TypedDict):
step_type: Literal["print"]
url: str
Expand Down Expand Up @@ -199,6 +205,7 @@ class GetScreenshotTrace(TypedDict):

ApaStepTrace = (
GoToUrlTrace
| GetUrlTrace
| PrintTrace
| AgentTrace
| ForLoopTrace
Expand Down
11 changes: 11 additions & 0 deletions packages/narada-pyodide/src/narada/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
GetScreenshotResponse,
GetSimplifiedHtmlRequest,
GetSimplifiedHtmlResponse,
GetUrlRequest,
GetUrlResponse,
GoToUrlRequest,
PrintMessageRequest,
ReadGoogleSheetRequest,
Expand Down Expand Up @@ -448,6 +450,15 @@ async def go_to_url(
GoToUrlRequest(url=url, new_tab=new_tab), timeout=timeout
)

async def get_url(self, *, timeout: int | None = None) -> str:
"""Gets the URL of the current active page."""
result = await self._run_extension_action(
GetUrlRequest(),
GetUrlResponse,
timeout=timeout,
)
return result.url

async def print_message(self, *, message: str, timeout: int | None = None) -> None:
"""Prints a message in the Narada extension side panel chat."""
return await self._run_extension_action(
Expand Down
10 changes: 10 additions & 0 deletions packages/narada/src/narada/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
GetScreenshotResponse,
GetSimplifiedHtmlRequest,
GetSimplifiedHtmlResponse,
GetUrlRequest,
GetUrlResponse,
GoToUrlRequest,
PrintMessageRequest,
ReadGoogleSheetRequest,
Expand Down Expand Up @@ -422,6 +424,14 @@ async def go_to_url(
GoToUrlRequest(url=url, new_tab=new_tab), timeout=timeout
)

async def get_url(self, *, timeout: int | None = None) -> GetUrlResponse:
"""Gets the URL of the current active page."""
return await self._run_extension_action(
GetUrlRequest(),
GetUrlResponse,
timeout=timeout,
)

async def print_message(self, *, message: str, timeout: int | None = None) -> None:
"""Prints a message in the Narada extension side panel chat."""
return await self._run_extension_action(
Expand Down