mini-agent-framework 0.2.1__tar.gz → 0.2.2__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 (77) hide show
  1. {mini_agent_framework-0.2.1/src/mini_agent_framework.egg-info → mini_agent_framework-0.2.2}/PKG-INFO +14 -2
  2. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/README.md +12 -1
  3. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/pyproject.toml +2 -2
  4. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/engine.py +13 -0
  5. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/session.py +2 -0
  6. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/builtin/browser_tools.py +9 -4
  7. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2/src/mini_agent_framework.egg-info}/PKG-INFO +14 -2
  8. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent_framework.egg-info/requires.txt +1 -0
  9. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/LICENSE +0 -0
  10. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/setup.cfg +0 -0
  11. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/__init__.py +0 -0
  12. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/cli.py +0 -0
  13. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/config/__init__.py +0 -0
  14. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/config/settings.py +0 -0
  15. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/__init__.py +0 -0
  16. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/agent.py +0 -0
  17. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/memory/__init__.py +0 -0
  18. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/memory/conversation.py +0 -0
  19. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/orchestrator.py +0 -0
  20. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/session_manager.py +0 -0
  21. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/tool_loop.py +0 -0
  22. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/utils/__init__.py +0 -0
  23. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/utils/action_tracker.py +0 -0
  24. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/utils/approval.py +0 -0
  25. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/core/utils/json_utils.py +0 -0
  26. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/llm/__init__.py +0 -0
  27. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/llm/base.py +0 -0
  28. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/prompts/__init__.py +0 -0
  29. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/prompts/orchestrator_prompt.py +0 -0
  30. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/prompts/prompt_builder.py +0 -0
  31. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/providers/__init__.py +0 -0
  32. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/providers/nvidia_provider.py +0 -0
  33. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/__init__.py +0 -0
  34. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/__init__.py +0 -0
  35. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/exceptions.py +0 -0
  36. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/logger.py +0 -0
  37. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/models.py +0 -0
  38. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tool_registry.py +0 -0
  39. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/__init__.py +0 -0
  40. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/base.py +0 -0
  41. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/check.py +0 -0
  42. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/click.py +0 -0
  43. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/close.py +0 -0
  44. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/dialog.py +0 -0
  45. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/download.py +0 -0
  46. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/extract.py +0 -0
  47. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/fill.py +0 -0
  48. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/javascript.py +0 -0
  49. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/navigate.py +0 -0
  50. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/observe.py +0 -0
  51. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/open.py +0 -0
  52. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/read.py +0 -0
  53. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/screenshot.py +0 -0
  54. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/scroll.py +0 -0
  55. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/select.py +0 -0
  56. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/storage.py +0 -0
  57. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/tabs.py +0 -0
  58. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/upload.py +0 -0
  59. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/browser/tools/wait.py +0 -0
  60. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/builtin/__init__.py +0 -0
  61. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/builtin/bash_tool.py +0 -0
  62. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/builtin/data_tools.py +0 -0
  63. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/builtin/file_tools.py +0 -0
  64. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/builtin/math_tools.py +0 -0
  65. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/builtin/system_tools.py +0 -0
  66. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/builtin/web_tools.py +0 -0
  67. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/registry/tools.py +0 -0
  68. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/skills/__init__.py +0 -0
  69. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/skills/builtin.py +0 -0
  70. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/skills/code-review/__init__.py +0 -0
  71. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/skills/code-review/code-review.md +0 -0
  72. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/skills/developer/__init__.py +0 -0
  73. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent/skills/developer/developer.md +0 -0
  74. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent_framework.egg-info/SOURCES.txt +0 -0
  75. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent_framework.egg-info/dependency_links.txt +0 -0
  76. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent_framework.egg-info/entry_points.txt +0 -0
  77. {mini_agent_framework-0.2.1 → mini_agent_framework-0.2.2}/src/mini_agent_framework.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mini-agent-framework
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: A dynamic, need-based multi-agent AI framework with session memory, action tracking, tool approval, and browser automation
5
5
  Author-email: ayyandurai <ayyandurai456@gmail.com>
6
6
  License-Expression: MIT
@@ -25,6 +25,7 @@ Requires-Dist: fastapi>=0.111
25
25
  Requires-Dist: uvicorn>=0.24
26
26
  Provides-Extra: browser
27
27
  Requires-Dist: playwright>=1.38; extra == "browser"
28
+ Requires-Dist: playwright-stealth; extra == "browser"
28
29
  Dynamic: license-file
29
30
 
30
31
  # mini-agent-framework
@@ -438,12 +439,23 @@ playwright install chromium
438
439
  ```
439
440
 
440
441
  ```python
441
- from mini_agent.registry.builtin import BROWSER_TOOLS
442
+ from mini_agent.registry.builtin import init_browser, BROWSER_TOOLS
443
+
444
+ # headless=True → invisible (default)
445
+ # headless=False → visible GUI window
446
+ init_browser(headless=False)
442
447
  orch.register_tools(BROWSER_TOOLS)
443
448
  ```
444
449
 
445
450
  Available: `browser_open`, `browser_click`, `browser_fill`, `browser_select`, `browser_scroll`, `browser_extract`, `browser_screenshot`, `browser_read`, `browser_observe`, `browser_navigate`, `browser_tabs`, `browser_download`, `browser_dialog`, `browser_wait`, `browser_check`, `browser_close`, `browser_javascript`, `browser_upload`.
446
451
 
452
+ To toggle between modes at runtime:
453
+
454
+ ```python
455
+ init_browser(headless=False) # switch to visible mode
456
+ init_browser(headless=True) # switch back to headless
457
+ ```
458
+
447
459
  ---
448
460
 
449
461
  ## Configuration
@@ -409,12 +409,23 @@ playwright install chromium
409
409
  ```
410
410
 
411
411
  ```python
412
- from mini_agent.registry.builtin import BROWSER_TOOLS
412
+ from mini_agent.registry.builtin import init_browser, BROWSER_TOOLS
413
+
414
+ # headless=True → invisible (default)
415
+ # headless=False → visible GUI window
416
+ init_browser(headless=False)
413
417
  orch.register_tools(BROWSER_TOOLS)
414
418
  ```
415
419
 
416
420
  Available: `browser_open`, `browser_click`, `browser_fill`, `browser_select`, `browser_scroll`, `browser_extract`, `browser_screenshot`, `browser_read`, `browser_observe`, `browser_navigate`, `browser_tabs`, `browser_download`, `browser_dialog`, `browser_wait`, `browser_check`, `browser_close`, `browser_javascript`, `browser_upload`.
417
421
 
422
+ To toggle between modes at runtime:
423
+
424
+ ```python
425
+ init_browser(headless=False) # switch to visible mode
426
+ init_browser(headless=True) # switch back to headless
427
+ ```
428
+
418
429
  ---
419
430
 
420
431
  ## Configuration
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mini-agent-framework"
7
- version = "0.2.1"
7
+ version = "0.2.2"
8
8
  description = "A dynamic, need-based multi-agent AI framework with session memory, action tracking, tool approval, and browser automation"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -30,7 +30,7 @@ dependencies = [
30
30
  ]
31
31
 
32
32
  [project.optional-dependencies]
33
- browser = ["playwright>=1.38"]
33
+ browser = ["playwright>=1.38", "playwright-stealth"]
34
34
 
35
35
  [project.scripts]
36
36
  mini-agent-install-browser = "mini_agent.cli:install_browser"
@@ -22,6 +22,12 @@ from .exceptions import (
22
22
  BrowserTimeoutError,
23
23
  TabNotFoundError,
24
24
  )
25
+ try:
26
+ from playwright_stealth import stealth_sync
27
+ _STEALTH_AVAILABLE = True
28
+ except ImportError:
29
+ _STEALTH_AVAILABLE = False
30
+
25
31
  from .logger import get_logger
26
32
 
27
33
  logger = get_logger(__name__)
@@ -77,8 +83,10 @@ class BrowserManager:
77
83
  slow_mo_ms: int = 0,
78
84
  extra_launch_args: Optional[List[str]] = None,
79
85
  proxy: Optional[Dict[str, str]] = None,
86
+ stealth: bool = True,
80
87
  ):
81
88
  self.headless = headless
89
+ self.stealth = stealth
82
90
  self.browser_type = browser_type
83
91
  self.downloads_dir = os.path.abspath(downloads_dir)
84
92
  self.screenshots_dir = os.path.abspath(screenshots_dir)
@@ -167,6 +175,11 @@ class BrowserManager:
167
175
  async def open_tab(self, url: Optional[str] = None) -> str:
168
176
  self._ensure_started()
169
177
  page = await self._context.new_page()
178
+ if self.stealth:
179
+ if _STEALTH_AVAILABLE:
180
+ await stealth_sync(page)
181
+ else:
182
+ logger.warning("Stealth enabled but playwright_stealth not installed. Run: pip install playwright-stealth")
170
183
  self._tab_counter += 1
171
184
  tab_id = f"tab-{self._tab_counter}"
172
185
  state = TabState(page=page, tab_id=tab_id)
@@ -23,6 +23,7 @@ class BrowserSession:
23
23
  default_timeout_ms: int = 30_000,
24
24
  slow_mo_ms: int = 0,
25
25
  proxy: Optional[Dict[str, str]] = None,
26
+ stealth: bool = True,
26
27
  ):
27
28
  self._manager = BrowserManager(
28
29
  headless=headless,
@@ -34,6 +35,7 @@ class BrowserSession:
34
35
  default_timeout_ms=default_timeout_ms,
35
36
  slow_mo_ms=slow_mo_ms,
36
37
  proxy=proxy,
38
+ stealth=stealth,
37
39
  )
38
40
  self._registry = ToolRegistry(self._manager)
39
41
  self._started = False
@@ -29,9 +29,10 @@ _agent = None
29
29
  _loop = None
30
30
  _IMPORT_ERROR = None
31
31
  _headless_mode = True
32
+ _stealth_mode = True
32
33
 
33
34
 
34
- def init_browser(headless: bool = True):
35
+ def init_browser(headless: bool = True, stealth: bool = True):
35
36
  """Configure browser mode before registering BROWSER_TOOLS.
36
37
 
37
38
  Call BEFORE register_tools(BROWSER_TOOLS), or to restart with a
@@ -42,8 +43,11 @@ def init_browser(headless: bool = True):
42
43
  headless : bool
43
44
  True → invisible browser (default)
44
45
  False → visible GUI window
46
+ stealth : bool
47
+ True → enable Playwright stealth (avoids bot detection, default)
48
+ False → disable stealth (debugging)
45
49
  """
46
- global _headless_mode, _agent, _loop
50
+ global _headless_mode, _stealth_mode, _agent, _loop
47
51
  if _agent is not None:
48
52
  try:
49
53
  _loop.run_until_complete(_agent._manager.shutdown())
@@ -52,6 +56,7 @@ def init_browser(headless: bool = True):
52
56
  _agent = None
53
57
  _loop = None
54
58
  _headless_mode = headless
59
+ _stealth_mode = stealth
55
60
 
56
61
 
57
62
  def _auto_install_chromium():
@@ -90,7 +95,7 @@ def _ensure_browser():
90
95
  try:
91
96
  _loop = asyncio.new_event_loop()
92
97
  asyncio.set_event_loop(_loop)
93
- _agent = BrowserSession(headless=_headless_mode)
98
+ _agent = BrowserSession(headless=_headless_mode, stealth=_stealth_mode)
94
99
  _loop.run_until_complete(_agent.start())
95
100
  except Exception as e:
96
101
  error_msg = str(e).lower()
@@ -99,7 +104,7 @@ def _ensure_browser():
99
104
  _auto_install_chromium()
100
105
  _loop = asyncio.new_event_loop()
101
106
  asyncio.set_event_loop(_loop)
102
- _agent = BrowserSession(headless=_headless_mode)
107
+ _agent = BrowserSession(headless=_headless_mode, stealth=_stealth_mode)
103
108
  _loop.run_until_complete(_agent.start())
104
109
  return
105
110
  except Exception as retry_err:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mini-agent-framework
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: A dynamic, need-based multi-agent AI framework with session memory, action tracking, tool approval, and browser automation
5
5
  Author-email: ayyandurai <ayyandurai456@gmail.com>
6
6
  License-Expression: MIT
@@ -25,6 +25,7 @@ Requires-Dist: fastapi>=0.111
25
25
  Requires-Dist: uvicorn>=0.24
26
26
  Provides-Extra: browser
27
27
  Requires-Dist: playwright>=1.38; extra == "browser"
28
+ Requires-Dist: playwright-stealth; extra == "browser"
28
29
  Dynamic: license-file
29
30
 
30
31
  # mini-agent-framework
@@ -438,12 +439,23 @@ playwright install chromium
438
439
  ```
439
440
 
440
441
  ```python
441
- from mini_agent.registry.builtin import BROWSER_TOOLS
442
+ from mini_agent.registry.builtin import init_browser, BROWSER_TOOLS
443
+
444
+ # headless=True → invisible (default)
445
+ # headless=False → visible GUI window
446
+ init_browser(headless=False)
442
447
  orch.register_tools(BROWSER_TOOLS)
443
448
  ```
444
449
 
445
450
  Available: `browser_open`, `browser_click`, `browser_fill`, `browser_select`, `browser_scroll`, `browser_extract`, `browser_screenshot`, `browser_read`, `browser_observe`, `browser_navigate`, `browser_tabs`, `browser_download`, `browser_dialog`, `browser_wait`, `browser_check`, `browser_close`, `browser_javascript`, `browser_upload`.
446
451
 
452
+ To toggle between modes at runtime:
453
+
454
+ ```python
455
+ init_browser(headless=False) # switch to visible mode
456
+ init_browser(headless=True) # switch back to headless
457
+ ```
458
+
447
459
  ---
448
460
 
449
461
  ## Configuration
@@ -8,3 +8,4 @@ uvicorn>=0.24
8
8
 
9
9
  [browser]
10
10
  playwright>=1.38
11
+ playwright-stealth