Skip to content

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 /approve now 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, and visual.negativeRequestPhrases.
  • Selfie tool gating: normal LLM turns no longer receive the selfie tool, and disallowed model-emitted selfie calls 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 /approve parsing 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 /approve approves the oldest pending tool call while /approve all and /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, and who asked so 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, and pap 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 selfie calls 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.py passed with 69 tests.
  • backend/agent/.venv/bin/python -m ruff check backend/agent/g_agent backend/agent/tests --select F passed.
  • backend/agent/.venv/bin/python -m pytest -q backend/agent/tests passed with 474 tests.
  • Installed gateway package was updated with pipx install --force /home/galyarder/projects/galyarder-agent/backend/agent and verified as g-agent v0.1.19 before this version bump.
  • Runtime intent check verified kei aku ga minta pap ya => None, send selfie please => <request>, and pap dong => <request> from the installed package.
  • systemctl --user restart g-agent-gateway.service returned active and 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:

pipx install --force /path/to/galyarder-agent/backend/agent
systemctl --user restart g-agent-gateway.service