Skip to content

Releases: sshahzaiib/agy-bridge

v0.4.2 — Fix model selection for agy CLI 1.1+

Choose a tag to compare

@sshahzaiib sshahzaiib released this 19 Sep 21:01
d3911a8

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 models parsing handles both the legacy one-column format and the new two-column format, and drops the status line. (#15)
  • model and AGY_DEFAULT_MODEL now 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 form agy --model accepts on every CLI version.
  • server.json version 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

Choose a tag to compare

@sshahzaiib sshahzaiib released this 19 Jun 14:31

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

Choose a tag to compare

@sshahzaiib sshahzaiib released this 16 Jun 12:12

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

Choose a tag to compare

@sshahzaiib sshahzaiib released this 12 Jun 22:05

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

Choose a tag to compare

@sshahzaiib sshahzaiib released this 12 Jun 21:18

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_lookup 120s, deep_search 180s, analyze_files / adversarial_review / follow_up 300s, delegate 600s; setting AGY_TIMEOUT explicitly 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 single agy models fetch, 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