Skip to content

v0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Sep 07:22
· 22 commits to main since this release
b44360a

Highlights

  • πŸ”‘ License migrated from MIT to Apache-2.0 (#848)
  • πŸ” New upstream authentication filters: Azure AD (#815), GCP ADC β€” experimental (#828), and AWS SigV4 request signing (#802)
  • βš–οΈ Routing: provider load balancing (#731) and a secure provider gateway boundary (#386)
  • 🧩 Extensibility: http_callout filter (#760); llm-d ext_proc compatibility moved into AI (#334)
  • πŸ“Š Observability: OpenTelemetry routing spans (#729) and provider backend route tracing (#834)

Features

  • feat(routing): add provider load balancing (#731) β€” @nerdalert
  • feat(routing): add secure provider gateway boundary (#386) β€” @nerdalert
  • feat(token_rate_limit): sliding-window / token-bucket rate limiting (#796) β€” @jordigilh
  • feat(azure): add azure_ad upstream authentication filter (#815) β€” @szedan-rh
  • feat: add experimental gcp_adc upstream authentication filter (#828) β€” @szedan-rh
  • aws: add aws_sigv4_sign filter for signing upstream AWS requests (#802) β€” @szedan-rh
  • feat(callout): add http_callout filter β€” supersedes #727 (#760) β€” @usize
  • feat(llm-d): move ext_proc compatibility into AI (#334) β€” @nerdalert
  • feat(filters): add OpenTelemetry routing spans (#729) β€” @nerdalert
  • feat(observability): trace provider backend routes (#834) β€” @nerdalert
  • feat(openai): generalize the operation registry and matcher (#772) β€” @cdoern
  • feat(token-count): report prompt cache token breakdown (#582) β€” @noyitz
  • feat(file_search): full-flow-agentic example with IRR file search callout (#737) β€” @leseb

Security

  • fix(web_search): validate base_url against SSRF and credential disclosure (#851) β€” @leseb
  • fix(mcp_tool_resolve): strip credentials and honor tool_choice on empty resolve (#852) β€” @leseb
  • fix(a2a): defer route commit until EOS to prevent prefix-poisoning (#733) β€” @mkoushni
  • fix(a2a): reject oversized task-routing TTLs before Instant overflow (#823) β€” @mkoushni
  • fix(deps): update h2 for security audit (#764) β€” @nerdalert

Bug Fixes

  • fix(web_search): don't forward hosted web_search_call to inference backend (#853) β€” @leseb
  • fix(token_count): add OpenAI Responses API usage extraction (#714) β€” @yossiovadia
  • fix(token_count): preserve OpenAI Responses cache writes and parse once (#858) β€” @leseb
  • fix(token_usage): recover from SSE overflow instead of silently dropping usage (#782) β€” @mkoushni
  • fix(mcp_dispatch): preserve non-text MCP result content (#807) (#850) β€” @leseb
  • fix(mcp): bound dynamic session and protocol values (#655) β€” @skamenan7
  • fix(subrequest): honor runtime.subrequest_circuit_breaker on the shared client (#830) β€” @mkoushni
  • fix(azure_ad): schedule token refresh within skewed validity window (#829) β€” @szedan-rh
  • fix(responses): support the include query parameter on store retrieval (#822) β€” @r-papso
  • fix(responses): disable parallel tools on first inference (#711) β€” @skamenan7
  • fix(conversations): percent-decode conversation ID path segments (#824) β€” @mkoushni
  • fix(conversations): align create and update request contracts (#625) β€” @leseb
  • fix(guardrails): align NeMo status with /v1/guardrail/checks endpoint (#792) β€” @liavweiss
  • fix(openai): preserve non-2xx OGX responses in file resolution (#799) β€” @skamenan7

Refactors

  • refactor(responses): centralize usage accumulation (#702) β€” @rkaplan-hub
  • refactor(filters): rename agentic_loop to openai_agentic_loop (#748) β€” @leseb

Praxis core compatibility

  • fix(compat): align AI with Praxis main body and branch routing (#787) β€” @nerdalert
  • fix: keep Praxis main compatibility fixtures current (#757) β€” @nerdalert
  • fix: adapt to praxis-proxy-filter 0.5.3 API changes
  • chore(deps): switch Praxis crates from git tags to crates.io (#725) β€” @leseb

Tests & CI

  • test(integration): cover IRR delivery of agentic-loop 400/508 rejections (#847) β€” @leseb
  • Document and test provider fallback via the Iterative Request Router (#730) β€” @usize
  • test: opt loopback fixtures into allow_private_endpoints (#800) β€” @usize
  • fix(test): init new praxis-main context fields (#816) β€” @aslakknutsen
  • ci(store): add PostgreSQL CI coverage for the response store (#739) β€” @leseb
  • ci: add job timeouts, persist-credentials, and CodeQL on PRs / merge queue

Docs & Governance

  • chore(license): complete migration from MIT to Apache-2.0 (#848) β€” @leseb
  • docs: add attribution rules; correct architecture Key Files paths; fix stale version/image/module references
  • docs: migrate proposals to the centralized enhancements repo; update governance docs

Dependencies

  • chore(deps): bump rust 1.97-alpine β†’ 1.98-alpine (#817)
  • chore(deps): update Cargo.lock dependencies (#738) β€” @leseb
  • chore(deps): routine dependabot bumps (codeql-action #819/#820/#776/#777, setup-buildx #818, setup-uv #775) and cargo upgrade refreshes

Reverts

  • Revert "fix(guardrails): fail closed on NeMo redact verdict until body replacement" (#821, reverting #721) β€” @szedan-rh

New Contributors

Full Changelog: https://github.com/praxis-proxy/ai/commits/v0.3.0