Some checks failed
CI / Format (push) Successful in 7s
CI / Format (pull_request) Successful in 8s
CI / Clippy (push) Successful in 2m25s
CI / Test (push) Successful in 5m41s
CI / CUDA type-check (pull_request) Failing after 24m13s
CI / CUDA type-check (push) Failing after 24m24s
CI / Clippy (pull_request) Successful in 2m24s
CI / Test (pull_request) Successful in 7m21s
CI / Build cortex SRPM (pull_request) Has been skipped
CI / Publish cortex to COPR (pull_request) Has been skipped
CI / Build neuron SRPM (pull_request) Has been skipped
CI / Publish neuron to COPR (pull_request) Has been skipped
CI / Bump version in source (pull_request) Has been skipped
CI / Build cortex SRPM (push) Has been cancelled
CI / Build neuron SRPM (push) Has been cancelled
CI / Publish cortex to COPR (push) Has been cancelled
CI / Publish neuron to COPR (push) Has been cancelled
CI / Bump version in source (push) Has been cancelled
New crate crates/helexa-tools: an SSRF-guarded page fetcher with
readability extraction, so models can read a web page's article text
instead of guessing from 300-char search snippets.
Service (gallumbits :8889, fronted by edge GET /tools/fetch):
- GET /fetch?url= -> {url, title, text, truncated}; text/html via
dom_smoothie (Readability.js port), text/plain passthrough; 2MB
body cap, 12k-char text budget, 20s timeout
- SSRF policy: http/https only; public dotted hostnames (deny
.internal/.local/.lan/.home.arpa + dotless); EVERY resolved address
must be globally routable (deny RFC1918/loopback/link-local/CGNAT/
metadata/benchmarking/reserved, v4-mapped v6 unwrapped); connection
pinned to the validated address via reqwest resolve() (no TOCTOU);
redirects followed manually with per-hop revalidation
- packaging mirrors helexa-router: prebuilt-binary spec, systemd unit,
sysusers, firewalld service (8889), CI build/package/publish jobs,
deploy-gallumbits loop extended
Chat SPA: new read_page tool alongside web_search — the model can open
a search result and read the extracted article before answering; read
pages join the citation chips; status line shows "reading <host>…"
(new i18n key, all 42 locales). Tool rounds raised 3 -> 4 for the
search -> read -> answer pattern.
Also hardens the weather path found in live testing: openmeteo
geocodes the query, so the schema now says location-name-only, and the
executor drops time_range for category=weather (it silently suppresses
the live answer).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wpr9zRuucU5KXa7TCrQV6k
20 lines
723 B
TOML
20 lines
723 B
TOML
# helexa-tools configuration. All keys optional — these are the defaults.
|
|
# Env override prefix: HELEXA_TOOLS_ (e.g. HELEXA_TOOLS_MAX_TEXT_CHARS).
|
|
|
|
# Bind address for the HTTP API (edge proxies reach this over the mesh).
|
|
listen = "0.0.0.0:8889"
|
|
|
|
# Per-request wall-clock budget for one upstream fetch (seconds).
|
|
fetch_timeout_secs = 20
|
|
|
|
# Maximum bytes read from an upstream response body.
|
|
max_body_bytes = 2097152
|
|
|
|
# Maximum characters of extracted text returned to the caller — the
|
|
# consumer is a model context, so keep this bounded.
|
|
max_text_chars = 12000
|
|
|
|
# Maximum redirect hops followed (each hop is re-validated against the
|
|
# SSRF policy: public hostnames + globally routable addresses only).
|
|
max_redirects = 5
|