v2.8.0 — full localization + domain-agent convergence
The package now responds in the user's language end to end.
Localization
- LLM free-text replies in the user's language — mirrors the message language even for locales with no static translations. Gated by
ai-agent.ai_native.respond_in_user_language(default on). (#56) - Full static translations for
de,es,fr,pt(runtime/data_collector/lexicon/messages), with key + placeholder parity toen. (#57) supported_localesdefault is nowen,ar,de,es,fr,ptso the shipped locales resolve via app/request locale out of the box. (#58)- The runtime's directly-shown messages and the data tools' asks/errors are localized (
ai-engine::runtime.responses.*/runtime.tools.*) across all 6 locales. (#58, #59)
Fixes
- Domain (
ai_native) sub-agent finalizes cleanly — it now runs skill-free, so it no longer matches a global skill and gets trapped by that skill's required-final-tool guard on a read-only question. Aggregate "Total total" label deduped. (#55)
Notes
- de/es/fr/pt translations are machine-generated — a native-speaker review is recommended before production.
- Developer-facing config errors and tool success sentences (re-expressed by the model in-language) are intentionally not keyed.
Full suite green: 1909 tests.