Release v0.1.20¶
Overview¶
G-Agent v0.1.20 is a live-runtime patch release for Telegram approval recovery, context compression stability, and visual identity safety.
This release addresses issues observed in production channel logs after v0.1.19: bare /approve messages could fall through to normal LLM routing, context summarization called an unsupported provider method, image generation timeouts could surface as blank errors, and negative PAP/selfie complaints could still trigger deterministic selfie delivery when the gateway was running older code.
Highlights¶
- Approval replay without LLM detours: bare
/approvenow executes the oldest pending approval directly and completes the blocking checkpoint. - Config-backed visual request detection: selfie/PAP/photo triggers now come from
visual.requestKeywords,visual.requestVerbs,visual.requestModifiers, andvisual.negativeRequestPhrases. - Selfie tool gating: normal LLM turns no longer receive the
selfietool, and disallowed model-emittedselfiecalls are blocked before execution. - Provider-safe compression: context summarization now uses the stable provider
chat()interface and falls back to a deterministic reference-only digest. - Actionable timeout errors: blank image-generation exceptions now report the exception class name, such as
TimeoutException.
Fixes and hardening¶
- Fixed
/approveparsing for slash-prefixed Telegram messages. - Fixed approval-only messages so replay results are returned directly without a second LLM turn.
- Fixed pending approval replay so bare
/approveapproves the oldest pending tool call while/approve alland/approve <tool>remain supported. - Fixed negative PAP/selfie phrases such as
kei aku ga minta pap ya,oke gabakal minta pap akunya,ga ada yang minta,siapa yang minta,didn't ask,nobody asked, andwho askedso they do not trigger selfie delivery. - Fixed multilingual positive request handling for examples such as
send selfie please,show me your photo,take a picture of you,minta pap, andpap dong. - Fixed visual request detection so operators can customize request keywords, verbs, modifiers, and negative phrases from config instead of editing code.
- Fixed hidden or stale model-emitted
selfiecalls by validating every tool call against the current effective tool allowlist before execution. - Fixed context compression fallback so failed summarization no longer drops the protected middle digest entirely.
Configuration¶
New visual identity config fields:
{
"visual": {
"requestKeywords": ["pap", "selfie", "photo", "picture", "pic", "foto", "portrait"],
"requestVerbs": ["send", "show", "take", "snap", "share", "give", "generate", "make", "create", "minta", "kirim"],
"requestModifiers": ["please", "pls", "dong", "deh", "me", "you", "your", "kamu", "lu", "lo"],
"negativeRequestTerms": ["no", "not", "never", "don't", "do not", "jangan", "stop", "gabakal", "gak bakal"],
"negativeRequestPhrases": ["ga ada yang minta", "didn't ask", "nobody asked", "who asked"]
}
}
Existing configs continue to load because these fields have schema defaults.
Verification¶
backend/agent/.venv/bin/python -m pytest -q backend/agent/tests/test_runtime_checkpoints.py backend/agent/tests/test_bypass_busy.py backend/agent/tests/test_selfie_tool.pypassed with 69 tests.backend/agent/.venv/bin/python -m ruff check backend/agent/g_agent backend/agent/tests --select Fpassed.backend/agent/.venv/bin/python -m pytest -q backend/agent/testspassed with 474 tests.- Installed gateway package was updated with
pipx install --force /home/galyarder/projects/galyarder-agent/backend/agentand verified asg-agent v0.1.19before this version bump. - Runtime intent check verified
kei aku ga minta pap ya => None,send selfie please => <request>, andpap dong => <request>from the installed package. systemctl --user restart g-agent-gateway.servicereturnedactiveand Telegram reconnected after the installed package update.
Runtime notes¶
If the systemd user gateway still reports an older g-agent --version, reinstall the local package into pipx and restart the gateway: