v0.18.0
ductor v0.18.0
Antigravity (agy) is now a first-class provider, plus the new Fable model, a /reset command, a batch of Windows reliability fixes, and Telegram polish.
TL;DR
- Antigravity (
agy) provider — Google's Antigravity CLI joins Claude, Codex, and Gemini. Models are pulled live fromagy models, switching models actually works, and answers come back reliably even though agy's headless mode is rough around the edges. - Fable model —
fablenow shows up in the Claude model menu. /reset— clears the current provider's session and leaves the others untouched.- Windows reliability — an authenticated Claude/agy CLI is detected correctly now (npm
.cmdshim resolution), plus Docker stdin, process/path, and MIME fixes. /modelpolish — provider buttons sit two per row instead of one long line.- Cron/webhook tasks — task tools only offer providers the one-shot runner can actually run (webhooks gained Gemini).
Antigravity in a nutshell
agy's headless CLI has some sharp edges, so this took a few workarounds — all handled for you:
agy --printsilently drops stdout in non-TTY subprocesses (agy #76), so answers are read straight from agy's own transcript — which also strips the agentic step-by-step narration and leaves the clean final answer.- agy rejects any workspace under a dotted path like
~/.ductor(agy #20), so ductor exposes it through a non-dotted symlink agy accepts — created lazily, only when you actually use agy. - Fixed the
--printargument order so the selected model and your prompt actually reach agy instead of being swallowed.
Heads-up: agy's auth token can expire ~1h after login on Linux and isn't refreshable headlessly. If Antigravity suddenly falls back to its default model, just run agy once in a terminal to re-login.
Merged PRs
- #148 by @liuh886 — add the Antigravity (
agy) provider. - #147 by @liuh886 — Windows compatibility and Telegram streaming edge cases (Docker stdin, process/path handling, MIME fallbacks; duplicate-message dedup on HTML-split overflow, topic-scoped abort in Gemini streaming).
- #151 by @ryuhaneul — add the
fablemodel to the Claude selector. - #146 by @ryuhaneul —
/resetto clear the current provider session. - #143 by @askhatsoltanov1984-lang — fix
provider_forfor full Claude model IDs. - #142 by @ryuhaneul — inject prompts using the active session's provider/model.
- #139 by @ryuhaneul — forward
~/.ductor/.envsecrets to one-shot task subprocesses. - #136 by @ryuhaneul — scope
/stopto the current forum topic.
Other fixes
- Claude/agy auth on Windows (#149) — auth checks resolve the npm shim via
shutil.which, so an authenticated Claude CLI is no longer misreported as just "installed". /resetis wired into the help text and command routing.
Verification
pytest— full suite green (3773 tests)ruff format --check .,ruff check .,mypy ductor_bot— cleanductor --version→ductor 0.18.0
Full changelog: v0.17.0...v0.18.0