Adds a disk-backed scrape cache under workspace/web_cache keyed by
the SHA-256 of the URL, honoring WEB_SEARCH_SCRAPE_CACHE_TTL so
repeated lookups within the window skip the network entirely.
Fetches now retry twice with exponential backoff before giving up,
and URLs are screened against SCRAPING_BLOCKED_EXTENSIONS and
SCRAPING_BLOCKED_DOMAINS to avoid downloading binaries or
denylisted hosts.
New scraping knobs (enable flag, max chars, cache TTL, blocklists)
are exposed via .env, alongside a provider switch to stepfun with
the step-3.7-flash default model.
Adds a post-generation validation step that checks whether a
search-grounded reply is actually supported by the retrieved
results: it extracts cited URLs from the response and flags
replies that claim to have searched without citing any of the
provided sources, as well as replies containing specific
numbers or dates absent from the results.
Also switches the default model to xiaomi/mimo-v2.6-flash and
documents the anti-hallucination behavior in the README.
- Add VISION_MODEL and VISION_PROVIDER env options with openrouter
default and provider auto-detection from the model id
- Add /veriavision, /configiavision and /about commands
- Support natural-language editing of files inside workspace/ and a
/baixar command to download them
- Replace config-based timezone with system-local time detection
- Add module version/author/license metadata
- Document development conventions in new RULES.md and update
README.md/DEPLOY.md with the new commands and env vars
- Add WEB_SEARCH_ENABLED and WEB_SEARCH_MAX_RESULTS config options
- Detect search-intent messages via trigger keywords and inject web
results into the AI context
- Instruct the system prompt to use web search for factual, current,
or time-sensitive questions instead of inventing data
- Rename uploads directory from `uploadsfiles/` to `workspace/`,
updating .gitignore and backup instructions in DEPLOY.md
Add a voice message handler that downloads OGG audio, converts it to
WAV via pydub/ffmpeg, and transcribes it with Google Speech Recognition
(pt-BR) before feeding the text into the normal message pipeline.
Also extract shared text processing into process_text_message, guard
against updates without a text attribute, switch the default AI provider
to openrouter with deepseek-v4-flash, and document the ffmpeg system
requirement in DEPLOY.md.
Initial project setup including the main agent script, configuration
files, profile JSON state, systemd service unit, startup script,
deployment documentation, and Python dependencies.
Includes .env, venv/, and __pycache__/ which should likely be
excluded via .gitignore to avoid committing secrets and artifacts.