feat: add feature flag for browser run tool

additional refactors to pass precommit
This commit is contained in:
STJ 2026-03-23 16:09:46 -07:00
parent 7e63b2411a
commit 59040eee9f
5 changed files with 40 additions and 23 deletions

View file

@ -38,6 +38,7 @@ class Config:
# Tool & Feature Configuration
perplexity_api_key = None
strix_disable_browser = "false"
strix_enable_browser_agent = "false"
# Runtime Configuration
strix_image = "ghcr.io/usestrix/strix-sandbox:0.1.13"

View file

@ -40,6 +40,7 @@ SANDBOX_MODE = os.getenv("STRIX_SANDBOX_MODE", "false").lower() == "true"
HAS_PERPLEXITY_API = bool(Config.get("perplexity_api_key"))
DISABLE_BROWSER = (Config.get("strix_disable_browser") or "false").lower() == "true"
ENABLE_BROWSER_AGENT = (Config.get("strix_enable_browser_agent") or "false").lower() == "true"
if not SANDBOX_MODE:
from .agents_graph import * # noqa: F403

View file

@ -295,41 +295,46 @@ async def browser_action(
"ws_url": ws_url,
"is_running": True,
}
return result
if action == "close_browser":
elif action == "close_browser":
await _close_session(agent_id)
return {
result = {
"message": "Browser closed",
"is_running": False,
}
elif action == "run":
from strix.tools.registry import _is_browser_agent_enabled
session = _get_session(agent_id)
if action == "run":
if not task:
return {
if not _is_browser_agent_enabled():
result = {
"error": "The 'run' action (browser agent mode) is not enabled. "
"Set STRIX_ENABLE_BROWSER_AGENT=true to enable it. "
"Use granular browser actions instead.",
"is_running": False,
}
elif not task:
result = {
"error": "task required for run action",
"is_running": False,
}
runner = partial(_run_browser_agent, session, task, return_fields, metadata)
desc = task
else:
session = _get_session(agent_id)
runner = partial(_run_browser_agent, session, task, return_fields, metadata)
result = await _execute_task(session, runner, task)
if "error" not in result:
result = await populate_response(session, result)
else:
session = _get_session(agent_id)
runner = partial(_run_browser_tool, session, action, kwargs, metadata)
desc = f"{action}({list(kwargs.keys())[:3]})"
task_output = await _execute_task(session, runner, desc)
if "error" in task_output:
return task_output
return await populate_response(session, task_output)
result = await _execute_task(session, runner, desc)
if "error" not in result:
result = await populate_response(session, result)
except Exception as error:
logger.exception("browser_action error: %s", action)
return {
result = {
"error": str(error),
"is_running": False,
}
return result

View file

@ -163,6 +163,16 @@ def _is_browser_disabled() -> bool:
return str(val).lower() == "true"
def _is_browser_agent_enabled() -> bool:
if os.getenv("STRIX_ENABLE_BROWSER_AGENT", "").lower() == "true":
return True
from strix.config import Config
val: str = Config.load().get("env", {}).get("STRIX_ENABLE_BROWSER_AGENT", "")
return str(val).lower() == "true"
def _has_perplexity_api() -> bool:
if os.getenv("PERPLEXITY_API_KEY"):
return True

4
uv.lock generated
View file

@ -8108,7 +8108,7 @@ wheels = [
[[package]]
name = "strix-agent"
version = "0.8.2"
version = "0.8.3"
source = { editable = "." }
dependencies = [
{ name = "browser-use" },
@ -8182,7 +8182,7 @@ requires-dist = [
{ name = "rich" },
{ name = "scrubadub", specifier = ">=2.0.1" },
{ name = "tenacity", specifier = ">=9.0.0" },
{ name = "textual", specifier = ">=4.0.0" },
{ name = "textual", specifier = ">=6.0.0" },
{ name = "traceloop-sdk", specifier = ">=0.53.0" },
{ name = "uvicorn", marker = "extra == 'sandbox'" },
{ name = "xmltodict", specifier = ">=0.13.0" },