Repository navigation
Releases: sshahzaiib/agy-bridge
Release list
v0.4.2 — Fix model selection for agy CLI 1.1+
Fix model selection for agy CLI 1.1+
Since agy CLI 1.1.x, agy models prints a Fetching available models... status line followed by <id>\t<display name> rows. agy-bridge 0.4.1 kept whole lines, so every model argument was rejected with Model "..." is not available, per-tool routing silently fell back to agy's default, and AGY_DEFAULT_MODEL was ignored. Reported in #14 — thanks @suho-park-00.
Changes
agy modelsparsing handles both the legacy one-column format and the new two-column format, and drops the status line. (#15)modelandAGY_DEFAULT_MODELnow accept either the id (gemini-3.7-flash-medium) or the display name (Gemini 3.7 Flash (Medium)). Both normalise to the display name, the formagy --modelaccepts on every CLI version.server.jsonversion synced with the package (was stuck at 0.4.0).
Known follow-up
The built-in per-tool routing chains still reference Gemini 3.5 Flash, which no longer appears in current agy models output. Affected tools fall through to agy's default with a footer note. A chain refresh is next.
Full Changelog: v0.4.1...v0.4.2
v0.4.1
Docs-only release.
Changes
- Centered the README header (title, badges, tagline).
- Added the live Glama score badge (quality score: A / 92%).
- Added a Listed on row linking to Glama, MCP Market, PulseMCP, mcp.so, and MCP Servers.
No functional/code changes — republished so the npm package page reflects the updated README.
Full Changelog: v0.4.0...v0.4.1
v0.4.0 — Per-tool timeout overrides
Per-tool timeout overrides
Each tool's timeout can now be configured independently via an AGY_TIMEOUT_<TOOL_NAME> env var — without affecting the others.
Previously the only knob was the global AGY_TIMEOUT, which overrides every tool's timeout at once (e.g. raising deep_search to 300s would also drop delegate from 600s to 300s).
Precedence: per-tool env (AGY_TIMEOUT_DEEP_SEARCH) > global AGY_TIMEOUT > per-tool default.
Variables
AGY_TIMEOUT_ANALYZE_FILES, AGY_TIMEOUT_DEEP_SEARCH, AGY_TIMEOUT_WEB_LOOKUP, AGY_TIMEOUT_ADVERSARIAL_REVIEW, AGY_TIMEOUT_FOLLOW_UP, AGY_TIMEOUT_DELEGATE
Example
"env": { "AGY_TIMEOUT_DEEP_SEARCH": "300" }Gives deep_search a 5-minute timeout while every other tool keeps its own default.
Full changelog: v0.3.1...v0.4.0
v0.3.1 — Registry metadata
Metadata-only release for registry listings: mcpName (official MCP Registry ownership validation), server.json, glama.json, and a Dockerfile for registry build verification. No code changes.
Now discoverable on the official MCP Registry.
v0.3.0 — Quota-aware failover & hang fixes
Fixes the indefinite-hang failure mode and adds dynamic, quota-aware model routing so delegations keep flowing when a model's quota runs out.
The bug
agy's print mode swallows RESOURCE_EXHAUSTED (code 429) errors — it silently retries every ~2s until --print-timeout, then exits 0 with empty output. With the old 1200s default timeout, a quota-hit delegation looked like a 20-minute hang that returned nothing, blocking the MCP client the whole time.
Added
- Quota-aware failover — each run writes its own log (
--log-file); the bridge polls it and reacts to a 429 within ~1 second: kills the run, parses the reset time (Resets in 4h24m), and retries the same prompt on the next model in the tool's chain - Cooldown registry — exhausted models are skipped on all subsequent calls until their quota resets, so routing is proactively quota-aware after the first 429
- Per-tool timeouts —
web_lookup120s,deep_search180s,analyze_files/adversarial_review/follow_up300s,delegate600s; settingAGY_TIMEOUTexplicitly overrides all of them - MCP cancellation — aborting the tool call (e.g. Esc in Claude Code) now kills the agy process instead of orphaning it
- Failover annotations — the response footer reports what happened:
failover: Gemini 3.5 Flash (Medium): quota exhausted (resets in 4h24m)
Fixed
- Empty agy output is reported as an error, never as a silent success
- The whole process group is killed (SIGTERM → SIGKILL escalation), and the deadline fires even if agy's helper processes hold the output pipes open
ModelRegistry: concurrent first calls share a singleagy modelsfetch, and transient listing failures are retried instead of being cached for the process lifetime- When every chain model is exhausted, the call fails in seconds with the reset times listed — instead of hanging
Verification
66 unit tests (31 new) plus a live e2e test (AGY_E2E=1) proving an exhausted model returns a QuotaError in ~6s instead of hanging.
Full diff: 1027c7e...v0.3.0