navcli 0.2.0__py3-none-any.whl → 0.2.2__py3-none-any.whl

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.
navcli/server/__init__.py CHANGED
@@ -22,13 +22,15 @@ _NAVCLI_SESSIONS_DIR = os.path.join(_NAVCLI_HOME, "sessions")
22
22
  _server: Optional[uvicorn.Server] = None
23
23
 
24
24
 
25
- async def start_server(host: str = "127.0.0.1", port: int = 8765, headless: bool = True) -> uvicorn.Server:
25
+ async def start_server(host: str = "127.0.0.1", port: int = 8765, headless: bool = True,
26
+ browser_args: Optional[list] = None) -> uvicorn.Server:
26
27
  """Start the browser server.
27
28
 
28
29
  Args:
29
30
  host: Host to bind
30
31
  port: Port to listen
31
32
  headless: Run browser in headless mode (default: True)
33
+ browser_args: Additional browser launch arguments
32
34
 
33
35
  Returns:
34
36
  Uvicorn server instance
@@ -36,7 +38,7 @@ async def start_server(host: str = "127.0.0.1", port: int = 8765, headless: bool
36
38
  global _server
37
39
 
38
40
  # Start browser
39
- await start_browser(headless=headless)
41
+ await start_browser(headless=headless, args=browser_args)
40
42
 
41
43
  # Create app
42
44
  app = create_app()
@@ -80,9 +82,20 @@ def main():
80
82
  help="Run in headless mode (default)")
81
83
  parser.add_argument("--no-headless", dest="headless", action="store_false",
82
84
  help="Run with GUI (non-headless)")
85
+ parser.add_argument("--memory-limit", type=int, default=None,
86
+ help="Browser memory limit in MB (e.g., --memory-limit 512)")
83
87
 
84
88
  args = parser.parse_args()
85
89
 
90
+ # Build browser args for memory limit
91
+ browser_args = None
92
+ if args.memory_limit:
93
+ browser_args = [
94
+ f"--js-flags=--max-old-space-size={args.memory_limit}",
95
+ "--disable-dev-shm-usage",
96
+ ]
97
+ print(f"Memory limit: {args.memory_limit}MB")
98
+
86
99
  print(f"Starting NavCLI Browser Server on {args.host}:{args.port}...")
87
100
  print(f"Headless: {args.headless}")
88
101
  print("-" * 60)
@@ -117,7 +130,7 @@ def main():
117
130
  print("-" * 60)
118
131
 
119
132
  try:
120
- asyncio.run(start_server(args.host, args.port, headless=args.headless))
133
+ asyncio.run(start_server(args.host, args.port, headless=args.headless, browser_args=browser_args))
121
134
  except KeyboardInterrupt:
122
135
  print("\nShutting down...")
123
136
  sys.exit(0)
navcli/server/browser.py CHANGED
@@ -25,11 +25,12 @@ _NAVCLI_SESSIONS_DIR = os.path.join(_NAVCLI_HOME, "sessions")
25
25
  _storage_state_path: str = os.path.join(_NAVCLI_SESSIONS_DIR, "session.json") # Default session file
26
26
 
27
27
 
28
- async def start_browser(headless: bool = True):
28
+ async def start_browser(headless: bool = True, args: Optional[list] = None):
29
29
  """Start the browser.
30
30
 
31
31
  Args:
32
32
  headless: Whether to run in headless mode (default: True)
33
+ args: Additional browser launch arguments
33
34
  """
34
35
  global _browser, _context, _page
35
36
 
@@ -43,6 +44,8 @@ async def start_browser(headless: bool = True):
43
44
  user_data_dir = os.environ.get("NAVCLI_USER_DATA_DIR")
44
45
 
45
46
  launch_kwargs = {"headless": headless}
47
+ if args:
48
+ launch_kwargs["args"] = args
46
49
  if executable_path:
47
50
  launch_kwargs["executable_path"] = executable_path
48
51
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: navcli
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: 可交互、可探索的浏览器命令行工具,专为 AI Agent 设计
5
5
  Author: NavCLI Team
6
6
  License: MIT
@@ -76,4 +76,6 @@ Become the **standard browser interaction layer** for AI Agents, enabling any Ag
76
76
 
77
77
  ## Related Documentation
78
78
 
79
+ - [Skill File Download](https://github.com/wumu2013/navcli/blob/main/docs/skill.md)
80
+ - [Project Homepage](https://make.datavoid.fun/navcli/)
79
81
  - [PRD Product Requirements](./NAVCLI_PRD.md)
@@ -14,9 +14,9 @@ navcli/core/models/dom.py,sha256=vZzEpzLEOlCnUJWBWx0-gmHj8WBxorsnPsZJgUW3UOE,116
14
14
  navcli/core/models/element.py,sha256=6L8PnY7h_-_MFweq6NU6gdG1g5_r_AHlW1bYTuUBNoM,747
15
15
  navcli/core/models/feedback.py,sha256=K67nc7fCiAAfeYKDppNEnHtM41fSdF-Ai7IMhvAv7PY,689
16
16
  navcli/core/models/state.py,sha256=6TBh6zMX8uhBcFICNLFgJhPKLRbET47fjZTjvt3n0Hw,1002
17
- navcli/server/__init__.py,sha256=KUgDIwwAhzq-5UcUV8A2pcXW6AhPFy6mGFvFThTjvjs,3694
17
+ navcli/server/__init__.py,sha256=eyUU2kDdtwRwHqhBTJ3vpqp86WAMpBpsnhbniALSa3E,4299
18
18
  navcli/server/app.py,sha256=zNWYPGRGVWmoyiZX1g9i6LNqSagJirwzEi8eqsYUUqs,1320
19
- navcli/server/browser.py,sha256=LAOQO157dYO1YVQe88hAnFISK0nKkq8MP96N9BRjr3I,12115
19
+ navcli/server/browser.py,sha256=OneOVyd3yQnVSGiY0EU6WZ2RrR0QJa8FbZlWAF6eTF8,12244
20
20
  navcli/server/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  navcli/server/routes/__init__.py,sha256=LCd1lCcBCqJmFchr9OTvKJvCTQNLETAljdPaou-fd3I,180
22
22
  navcli/server/routes/control.py,sha256=ysoszU2OjhVH4BW3oahJ5-28l3yheQ-vhdqI-I8EVEU,1071
@@ -32,8 +32,8 @@ navcli/utils/selector.py,sha256=E_8E5bjjL1gDn524l3bH3XzK3egn9IyoYEb7zXsTwTQ,2146
32
32
  navcli/utils/text.py,sha256=wCFCKCn6Ibi8GjAeGXBHT5CfS8BCs7X9qVxDq4eR1tE,389
33
33
  navcli/utils/time.py,sha256=bAjJ59rp02MkIfoCT1TzmFd_oGaGlOI-5RPiKSqT-kI,1181
34
34
  navcli/utils/url.py,sha256=UG71w8ArYJlqjl2XslwAN-Kk9GJOPK3k5fg6CxXE5js,301
35
- navcli-0.2.0.dist-info/METADATA,sha256=F_QRiKsOC_u0wEPncBydWEXfyZ4wnsBmL4lYG6lNsSY,2697
36
- navcli-0.2.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
37
- navcli-0.2.0.dist-info/entry_points.txt,sha256=J26RwbEYUO5UbuhH0aXF_tvQFCOCatAR80blaSn5oWk,72
38
- navcli-0.2.0.dist-info/top_level.txt,sha256=dwTN5Lw7STNP3zhL2-RDElX3EslzM2sbYYLfuszQSO4,7
39
- navcli-0.2.0.dist-info/RECORD,,
35
+ navcli-0.2.2.dist-info/METADATA,sha256=i5RtZX08PwpkfrZcPJ6Rm0A1KDUQBnyJ8gMQGebz9aU,2837
36
+ navcli-0.2.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
37
+ navcli-0.2.2.dist-info/entry_points.txt,sha256=J26RwbEYUO5UbuhH0aXF_tvQFCOCatAR80blaSn5oWk,72
38
+ navcli-0.2.2.dist-info/top_level.txt,sha256=dwTN5Lw7STNP3zhL2-RDElX3EslzM2sbYYLfuszQSO4,7
39
+ navcli-0.2.2.dist-info/RECORD,,
File without changes