@livekit/agents@1.9.0

livekit/agents-js@livekit/agents@1.9.0Sep 15, 2026by github-actions[bot]

Upgrading?

AI Summary

This minor release introduces telemetry for monitoring event loop blocking and improves stability with better handling of STT fallbacks, text simulations, and agent task lifecycle management.

Key Highlights

  • New telemetry feature telemetry.loopMonitor to detect synchronous code blocking the event loop
  • STT providers are kept healthy when fallback streams close
  • Fail fast error for DuplexModels started under text simulations
  • Fixed deadlock prevention for late inline AgentTasks during handoff and shutdown

New Features

  • telemetry.loopMonitor with configurable thresholds (LIVEKIT_AGENTS_LOOP_BLOCK_WARN_MS, LIVEKIT_AGENTS_LOOP_BLOCK_ERROR_MS)

Full Release Notes

### Minor Changes

-   Flag synchronous code that blocks agent event loops in telemetry and logs. - [#2459](https://github.com/livekit/agents-js/pull/2459) ([@rosetta-livekit-bot](https://github.com/apps/rosetta-livekit-bot))
    - Adds `telemetry.loopMonitor`. Stalls at or above 100 ms emit a back-dated `event_loop_blocked`
  span, a rate-limited warning, an `lk.agents.event_loop.blocked_duration` histogram measurement,
  and per-session stall summaries. Override the thresholds with `LIVEKIT_AGENTS_LOOP_BLOCK_WARN_MS`
  and `LIVEKIT_AGENTS_LOOP_BLOCK_ERROR_MS` (defaults 100 ms / 500 ms); `WARN_MS=0` disables it.

### Patch Changes

-   Keep healthy STT providers available when fallback streams close with transcripts in flight. - [#2381](https://github.com/livekit/agents-js/pull/2381) ([@swayamg20](https://github.com/swayamg20))

-   Fail fast with a clear error when a DuplexModel such as GPT-Live is started under a text simulation, which has no audio, instead of timing out on the first reply. - [#2481](https://github.com/livekit/agents-js/pull/2481) ([@u9g](https://github.com/u9g))

-   Reject late inline AgentTasks on an outgoing activity so handoff and shutdown do not deadlock while draining non-cancellable tools. - [#2488](https://github.com/livekit/agents-js/pull/2488) ([@swayamg20](https://github.com/swayamg20))

-   Place recorded audio where the sink reports it actually played, instead of inferring it from the moment playback finished. - [#2327](https://github.com/livekit/agents-js/pull/2327) ([@longcw](https://github.com/longcw))

Related Repositories