praisonai-browser 0.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. praisonai_browser-0.0.1/PKG-INFO +58 -0
  2. praisonai_browser-0.0.1/README.md +34 -0
  3. praisonai_browser-0.0.1/praisonai_browser/__init__.py +48 -0
  4. praisonai_browser-0.0.1/praisonai_browser/__main__.py +18 -0
  5. praisonai_browser-0.0.1/praisonai_browser/_protocol_bridge.py +75 -0
  6. praisonai_browser-0.0.1/praisonai_browser/_version.py +1 -0
  7. praisonai_browser-0.0.1/praisonai_browser/agent.py +838 -0
  8. praisonai_browser-0.0.1/praisonai_browser/benchmark.py +952 -0
  9. praisonai_browser-0.0.1/praisonai_browser/cdp_agent.py +1629 -0
  10. praisonai_browser-0.0.1/praisonai_browser/cdp_utils.py +367 -0
  11. praisonai_browser-0.0.1/praisonai_browser/cli/__init__.py +1 -0
  12. praisonai_browser-0.0.1/praisonai_browser/cli/app.py +11 -0
  13. praisonai_browser-0.0.1/praisonai_browser/cli/commands/__init__.py +1 -0
  14. praisonai_browser-0.0.1/praisonai_browser/cli/commands/browser.py +3162 -0
  15. praisonai_browser-0.0.1/praisonai_browser/diagnostics.py +609 -0
  16. praisonai_browser-0.0.1/praisonai_browser/launcher.py +363 -0
  17. praisonai_browser-0.0.1/praisonai_browser/playwright_agent.py +275 -0
  18. praisonai_browser-0.0.1/praisonai_browser/profiling.py +305 -0
  19. praisonai_browser-0.0.1/praisonai_browser/protocol.py +108 -0
  20. praisonai_browser-0.0.1/praisonai_browser/report.py +137 -0
  21. praisonai_browser-0.0.1/praisonai_browser/server.py +1113 -0
  22. praisonai_browser-0.0.1/praisonai_browser/sessions.py +386 -0
  23. praisonai_browser-0.0.1/praisonai_browser/video.py +333 -0
  24. praisonai_browser-0.0.1/praisonai_browser.egg-info/PKG-INFO +58 -0
  25. praisonai_browser-0.0.1/praisonai_browser.egg-info/SOURCES.txt +29 -0
  26. praisonai_browser-0.0.1/praisonai_browser.egg-info/dependency_links.txt +1 -0
  27. praisonai_browser-0.0.1/praisonai_browser.egg-info/entry_points.txt +2 -0
  28. praisonai_browser-0.0.1/praisonai_browser.egg-info/requires.txt +16 -0
  29. praisonai_browser-0.0.1/praisonai_browser.egg-info/top_level.txt +1 -0
  30. praisonai_browser-0.0.1/pyproject.toml +48 -0
  31. praisonai_browser-0.0.1/setup.cfg +4 -0
@@ -0,0 +1,58 @@
1
+ Metadata-Version: 2.4
2
+ Name: praisonai-browser
3
+ Version: 0.0.1
4
+ Summary: Browser automation for PraisonAI — Chrome extension bridge, CDP, and Playwright agents extracted from the praisonai wrapper.
5
+ Author: Mervin Praison
6
+ License: MIT
7
+ Project-URL: Homepage, https://docs.praison.ai
8
+ Project-URL: Repository, https://github.com/mervinpraison/PraisonAI
9
+ Requires-Python: <3.15,>=3.10
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: praisonaiagents>=1.6.126
12
+ Requires-Dist: rich>=13.7
13
+ Requires-Dist: typer>=0.12.0
14
+ Requires-Dist: click>=8.4.2
15
+ Provides-Extra: server
16
+ Requires-Dist: fastapi>=0.110.0; extra == "server"
17
+ Requires-Dist: uvicorn>=0.27.0; extra == "server"
18
+ Requires-Dist: websockets>=12.0; extra == "server"
19
+ Requires-Dist: aiohttp>=3.9.0; extra == "server"
20
+ Provides-Extra: playwright
21
+ Requires-Dist: playwright>=1.40.0; extra == "playwright"
22
+ Provides-Extra: all
23
+ Requires-Dist: praisonai-browser[playwright,server]; extra == "all"
24
+
25
+ # PraisonAI Browser
26
+
27
+ Browser automation for [PraisonAI](https://github.com/mervinpraison/PraisonAI) — Chrome extension bridge, CDP/hybrid agents, and Playwright automation as a standalone package or part of the full `praisonai` stack.
28
+
29
+ ## Install
30
+
31
+ ```bash
32
+ pip install "praisonai-browser[all]"
33
+
34
+ # Or via the umbrella product
35
+ pip install "praisonai[browser]"
36
+ ```
37
+
38
+ ## Quickstart
39
+
40
+ ```bash
41
+ praisonai-browser start --port 8765
42
+ praisonai-browser run "Search for AI news on Google"
43
+ praisonai-browser doctor
44
+ ```
45
+
46
+ With the full stack: `praisonai browser start`, `praisonai browser run "..."`.
47
+
48
+ ## Stack
49
+
50
+ ```
51
+ praisonaiagents (browser protocols)
52
+ └── praisonai-browser (this package)
53
+ └── praisonai (wrapper shims: praisonai.browser.*)
54
+ ```
55
+
56
+ Old import paths (`praisonai.browser`, `python -m praisonai.browser.server`) keep working via wrapper shims.
57
+
58
+ Boundary details: `src/praisonai/tests/PRAISONAI_BROWSER_MANIFEST.md`.
@@ -0,0 +1,34 @@
1
+ # PraisonAI Browser
2
+
3
+ Browser automation for [PraisonAI](https://github.com/mervinpraison/PraisonAI) — Chrome extension bridge, CDP/hybrid agents, and Playwright automation as a standalone package or part of the full `praisonai` stack.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pip install "praisonai-browser[all]"
9
+
10
+ # Or via the umbrella product
11
+ pip install "praisonai[browser]"
12
+ ```
13
+
14
+ ## Quickstart
15
+
16
+ ```bash
17
+ praisonai-browser start --port 8765
18
+ praisonai-browser run "Search for AI news on Google"
19
+ praisonai-browser doctor
20
+ ```
21
+
22
+ With the full stack: `praisonai browser start`, `praisonai browser run "..."`.
23
+
24
+ ## Stack
25
+
26
+ ```
27
+ praisonaiagents (browser protocols)
28
+ └── praisonai-browser (this package)
29
+ └── praisonai (wrapper shims: praisonai.browser.*)
30
+ ```
31
+
32
+ Old import paths (`praisonai.browser`, `python -m praisonai.browser.server`) keep working via wrapper shims.
33
+
34
+ Boundary details: `src/praisonai/tests/PRAISONAI_BROWSER_MANIFEST.md`.
@@ -0,0 +1,48 @@
1
+ """Browser automation package for PraisonAI.
2
+
3
+ Provides a bridge server for Chrome Extension ↔ PraisonAI Agent communication.
4
+
5
+ Example:
6
+ praisonai-browser start --port 8765
7
+
8
+ from praisonai_browser import BrowserServer
9
+ server = BrowserServer(port=8765)
10
+ server.start()
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ from praisonai_browser._version import __version__
16
+
17
+
18
+ def __getattr__(name: str):
19
+ if name == "BrowserServer":
20
+ from .server import BrowserServer
21
+ return BrowserServer
22
+ if name == "BrowserAgent":
23
+ from .agent import BrowserAgent
24
+ return BrowserAgent
25
+ if name == "SessionManager":
26
+ from .sessions import SessionManager
27
+ return SessionManager
28
+ if name == "CDPBrowserAgent":
29
+ from .cdp_agent import CDPBrowserAgent
30
+ return CDPBrowserAgent
31
+ if name == "run_cdp_only":
32
+ from .cdp_agent import run_cdp_only
33
+ return run_cdp_only
34
+ if name == "run_hybrid":
35
+ from .cdp_agent import run_hybrid
36
+ return run_hybrid
37
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
38
+
39
+
40
+ __all__ = [
41
+ "__version__",
42
+ "BrowserServer",
43
+ "BrowserAgent",
44
+ "SessionManager",
45
+ "CDPBrowserAgent",
46
+ "run_cdp_only",
47
+ "run_hybrid",
48
+ ]
@@ -0,0 +1,18 @@
1
+ """Console entry: ``praisonai-browser``."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import sys
6
+
7
+
8
+ def main(argv: list[str] | None = None) -> None:
9
+ from praisonai_browser.cli.app import app
10
+
11
+ args = argv if argv is not None else sys.argv[1:]
12
+ if not args:
13
+ args = ["--help"]
14
+ app(args=args, prog_name="praisonai-browser")
15
+
16
+
17
+ if __name__ == "__main__":
18
+ main()
@@ -0,0 +1,75 @@
1
+ """Map between agents-tier browser protocols and praisonai_browser runtime dicts."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any, Dict, Union
6
+
7
+ from praisonaiagents.tools.protocols.browser import (
8
+ BrowserAction,
9
+ BrowserActionType,
10
+ BrowserObservation,
11
+ BrowserSession,
12
+ )
13
+
14
+ # Agent/runtime actions that extend the base protocol enum (now in BrowserActionType).
15
+ _EXTRA_ACTIONS = frozenset()
16
+
17
+
18
+ def observation_from_dict(data: Dict[str, Any]) -> BrowserObservation:
19
+ """Convert a runtime observation dict to agents-tier ``BrowserObservation``."""
20
+ return BrowserObservation.from_dict(data)
21
+
22
+
23
+ def observation_to_dict(observation: Union[BrowserObservation, Dict[str, Any]]) -> Dict[str, Any]:
24
+ if isinstance(observation, BrowserObservation):
25
+ return observation.to_dict()
26
+ return observation
27
+
28
+
29
+ def _action_type_from_name(name: str) -> Union[BrowserActionType, str]:
30
+ try:
31
+ return BrowserActionType(name)
32
+ except ValueError:
33
+ # Extra actions extend the base protocol enum; pass them through as
34
+ # strings (BrowserActionType is a str subclass, so this stays compatible).
35
+ if name in _EXTRA_ACTIONS:
36
+ return name
37
+ return BrowserActionType.WAIT
38
+
39
+
40
+ def action_from_agent_dict(data: Dict[str, Any]) -> BrowserAction:
41
+ """Convert agent/runtime action dict to agents-tier ``BrowserAction``."""
42
+ raw = data.get("action", "wait")
43
+ action_type = _action_type_from_name(str(raw))
44
+ text = data.get("text") or data.get("value")
45
+ return BrowserAction(
46
+ action=action_type,
47
+ selector=data.get("selector"),
48
+ text=text,
49
+ url=data.get("url"),
50
+ direction=data.get("direction"),
51
+ thought=data.get("thought", ""),
52
+ done=bool(data.get("done", False)),
53
+ error=data.get("error"),
54
+ )
55
+
56
+
57
+ def action_to_agent_dict(action: BrowserAction) -> Dict[str, Any]:
58
+ """Convert agents-tier action to runtime dict (extension/CDP wire format)."""
59
+ payload = action.to_dict()
60
+ if action.text is not None:
61
+ payload["value"] = action.text
62
+ return payload
63
+
64
+
65
+ def session_from_dict(data: Dict[str, Any]) -> BrowserSession:
66
+ return BrowserSession(
67
+ session_id=data.get("session_id", data.get("id", "")),
68
+ goal=data.get("goal", data.get("task", "")),
69
+ status=data.get("status", "pending"),
70
+ steps=data.get("steps", []),
71
+ current_url=data.get("current_url", data.get("url")),
72
+ started_at=data.get("started_at"),
73
+ ended_at=data.get("ended_at"),
74
+ error=data.get("error"),
75
+ )
@@ -0,0 +1 @@
1
+ __version__ = "0.0.1"