# @tiens.nguyen/gonext-local-worker
Run:
  GONEXT_API_BASE=... GONEXT_WORKER_KEY=... npx -y --package @tiens.nguyen/gonext-local-worker gonext-local-worker

## Agent chat mode

Select **Agent** (instead of Chat) under the composer in the web app. Your
free-form prompt is handed to a [smolagents](https://github.com/huggingface/smolagents)
agent running on your local MLX/Ollama model. The agent can call tools (v1:
`http_request`) and streams its thinking steps + final answer directly into the
chat thread.

Requires smolagents in the worker's Python environment:

```sh
pip install smolagents certifi
```

- `certifi` supplies a trusted CA bundle so the agent's `http_request` tool can
  verify HTTPS certificates on macOS (where Python's default bundle may be
  missing). The worker falls back to the system bundle if certifi is absent.
- Agent mode is blocked for cloud models (the API returns 400). Select a local
  MLX or Ollama model first.
- Tool steps appear in the collapsible reasoning (`<think>`) area; the final
  answer is the message body — no new UI needed.

The agent script is `gonext_agent_chat.py` (reads `{messages, agentBaseURL,
agentApiKey, agentModelId, tools, maxSteps}` on stdin; emits NDJSON
`{"type":"step"/"final","text":"..."}` lines on stdout).

## API Check / HTTP probe (Tools & Agents modes)

The worker can run Postman-style HTTP probes queued from the web app
("Tools" = `tool_only`, "Agents" = `agentic`). The worker always performs the
actual HTTP request itself (Node `fetch`, so TLS works), measures the
status/latency/headers/body, and classifies it (2xx/3xx/4xx/5xx/timeout/
network_error).

- **Tools (`tool_only`)** — no extra setup. The selected local model writes a
  one-line health summary of the measured result.
- **Agents (`agentic`)** — a smolagents agent (running on the selected local
  model) produces the summary. Requires `pip install smolagents`.

  The agent talks to your local MLX OpenAI-compatible server (no cloud calls).
  The agent only summarizes; the worker's measurement stays the source of truth,
  so if smolagents or the model is unavailable the probe still returns the
  measured result with a note.

### Env vars

  GONEXT_PROBE_PYTHON   Python executable for smolagents scripts
                        (default: GONEXT_MLX_LM_PYTHON or python3)
