agent-zero/plugins/_browser_agent/api/model_preset.py
Alessandro d30a565549 browser-agent: selectable _model_config preset for browser runs
This PR keeps the Browser Agent runtime behavior as-is and only adds in the model-preset option for browser runs (highly requested by our users).

The Browser Agent can now use either:
- the effective Main Model from `_model_config`, or
- one saved `_model_config` preset dedicated to browser tasks

- this PR brings back LLM customization for Browser Agent plugin, but without over engineering. Model presets-only, not custom provider + LLM, like we have in Email Integration.
- created a separate `browser-agent-store.js` page store to remove JS from within x-data in the HTML markup of main.html
2026-04-12 03:38:41 +02:00

35 lines
1.2 KiB
Python

from helpers.api import ApiHandler, Request, Response
from plugins._browser_agent.helpers.model_preset import (
get_browser_model_preset_name,
save_browser_model_preset_name,
)
from plugins._model_config.helpers import model_config
class ModelPreset(ApiHandler):
async def process(self, input: dict, request: Request) -> dict | Response:
action = str(input.get("action", "get") or "get").strip().lower()
if action == "get":
return {
"ok": True,
"preset_name": get_browser_model_preset_name(),
}
if action not in {"set", "clear"}:
return Response(status=400, response=f"Unknown action: {action}")
preset_name = ""
if action == "set":
preset_name = str(input.get("preset_name", "") or "").strip()
if not preset_name:
return Response(status=400, response="Missing preset_name")
if not model_config.get_preset_by_name(preset_name):
return Response(status=404, response=f"Preset '{preset_name}' not found")
save_browser_model_preset_name(preset_name)
return {
"ok": True,
"preset_name": preset_name,
}