Skip to content

Release Notes: v0.5.0

Release Date: 2026-04-04

Summary

Agent Experience (AX) integration for machine-readable error handling. Errors are now classified into 8 categories with actionable metadata, enabling agents to make intelligent retry decisions.

Highlights

  • Error classification with DeepgramClassifier implementing resilience.ErrorClassifier
  • All provider errors wrapped in resilience.ProviderError with classification metadata
  • 8 error categories: transient, rate_limit, validation, auth, not_found, server, quota, unknown
  • Automatic retry decisions based on error retryability

Added

Error Classification

  • omnivoice.DeepgramClassifier - Classifies Deepgram-specific errors using HTTP status codes and error message patterns
  • omnivoice.ClassifyError() - Convenience function to wrap errors with AX metadata

Error Categories

Category Retryable Description
transient Yes Temporary failures (timeout, connection reset)
rate_limit Yes Rate limited (429)
server Yes Server errors (500, 502, 503)
validation No Invalid request (400, 422)
auth No Authentication/authorization (401, 403)
not_found No Resource not found (404)
quota No Quota exceeded
unknown No Unclassified errors

Changed

  • STT provider now wraps all errors in resilience.ProviderError
  • TTS provider now wraps all errors in resilience.ProviderError
  • Error messages include provider name, operation, and classification metadata

Usage

import (
    "github.com/plexusone/omnivoice-deepgram/omnivoice/tts"
    "github.com/plexusone/omnivoice-core/resilience"
)

provider, _ := tts.New(tts.WithAPIKey("your-api-key"))
result, err := provider.Synthesize(ctx, "Hello", config)

if err != nil {
    // Check if error is retryable
    if pe, ok := resilience.IsProviderError(err); ok {
        if pe.IsRetryable() {
            // Safe to retry with backoff
            fmt.Printf("Retryable error: %s\n", pe.GetCode())
        } else {
            // Don't retry, take corrective action
            fmt.Printf("Error: %s\nSuggestion: %s\n",
                pe.GetCode(), pe.GetSuggestion())
        }
    }
}

Dependencies

  • Requires github.com/plexusone/omnivoice-core v0.8.0+ for resilience package

Tests

  • 26 test cases covering all error categories
  • Tests for HTTP status code classification
  • Tests for error message pattern matching