chore(deps): update rust crate axum-server to 0.8#14
chore(deps): update rust crate axum-server to 0.8#14renovate[bot] wants to merge 101 commits intomasterfrom
Conversation
…imiting Add typed Rust HTTP client for Synapse's API surface (LLM, MCP, STT, TTS). Mount STT and TTS endpoint routers in the server. Replace Redis-based rate limit storage with in-memory cache storage.
Implement Phase 5 of Synapse integration plan: - Smart model routing with heuristic query analysis via tiktoken - Three routing strategies: threshold, cost-constrained, cascade - Circuit breaker health tracking with automatic recovery probing - Model registry with cost/quality profiles and runtime latency - Failover with equivalence groups and configurable retry attempts - Virtual model names (auto, fast, best, cheap) for routing shortcuts - Feedback tracker for live per-model latency and error rate metrics New crate: synapse-routing (analysis, registry, strategies, feedback) Modified: synapse-llm (health tracker, router integration, error types), synapse-config (failover and routing config schemas), integration-tests (failover scenarios and mock failure harness)
Introduce weighted score strategy that combines quality, cost, and latency into a single objective. Extract shared feedback-adjusted scoring into a dedicated module and simplify config defaults with derive macros.
Add `embedded` feature flag with optional synapse-llm, synapse-config, and synapse-core dependencies. Restructure SynapseClient to dispatch on a Backend enum (Remote vs Embedded), extract helper methods to free functions, and add cfg-gated Llm error variant. Remote behavior is unchanged; embedded arms return placeholder errors for now.
…bedded mode Set default-features = false on synapse-llm in workspace root so synapse-client embedded mode doesn't pull in axum. Synapse-server explicitly enables the http feature.
…ed mode Debug formatting produced "toolcalls" instead of "tool_calls" for FinishReason::ToolCalls. Use serde serialization which respects the rename_all = "snake_case" attribute. Also: use state.list_models() in handler, remove redundant stream assignment in client.
…action, and strategy registry Enhance the routing engine with richer query analysis (vision, long-context, multi-turn detection), capability-based model filtering, a pluggable Strategy trait with StrategyRegistry for custom strategies, and regex-based task classification. Wire the new structured analysis pipeline through synapse-llm.
…ts and usage metering Introduce synapse-billing crate with Aether API client, async usage recorder, and entitlement/usage caching. Wire billing identity resolution, entitlement gating, and token metering into the server middleware stack. Support BYOK, managed, and hybrid API key modes.
…, and provider trait Add OpenAI-compatible embeddings routing crate with EmbeddingRequest (supporting single/array input via EmbedInput), EmbeddingResponse, EmbeddingsError with IntoResponse, and EmbeddingsProvider async trait.
Implement OpenAiEmbeddingsProvider that POSTs to the OpenAI embeddings API, strips the "provider/" model prefix, and maps errors to the EmbeddingsError variants. Follows the STT whisper provider pattern.
Implement OpenAiEmbeddingsProvider that POSTs to the OpenAI embeddings API, strips the "provider/" model prefix, and maps errors to the EmbeddingsError variants. Follows the STT whisper provider pattern.
…erver Add EmbeddingsConfig to synapse-config, build EmbeddingsServerBuilder with provider dispatch, and mount POST /v1/embeddings endpoint in the main server.
OpenAI-compatible POST /v1/images/generations endpoint with provider dispatch, config, error handling, and server mount
The telemetry exporter endpoint used `\"` (TOML-escaped quotes) inside
the `default()` expression, which the `expand_env` regex didn't match.
The unexpanded template string then failed URL deserialization at
startup.
Fix the prod config to use unescaped quotes (matching all other
`default()` calls in the file) and harden the regex to accept both
`default("val")` and `default(\"val\")` forms.
Add STT/TTS/embeddings/image-gen feature keys to BillingConfig with route-to-feature mapping. Extend entitlement middleware from 2 checks to 5: api_access, modality gating, requests meter, input tokens meter, and output tokens meter. Broaden webhook cache invalidation to cover all entitlement and usage keys.
- Switch rate limiting from memory-only to Valkey-backed distributed storage - Add Google (Gemini 2.5 Pro/Flash) and AWS Bedrock providers to prod config with routing models, failover groups, and billing - Add synapse-cache crate: Valkey-backed exact-match response cache keyed by SHA-256 of canonical request, only for deterministic (temp=0) non-streaming - Add synapse-guardrails crate: configurable rule engine with keyword blocklists, regex patterns, max input tokens, and PII detection (SSN, credit card, email, phone) with block/warn actions - Wire cache into LlmState behind feature flag, guardrails as axum middleware
Strips Gemini and AWS Bedrock from launch lineup to reduce surface area. Launch with OpenAI, Anthropic, and Nvidia (8 models). Google and Bedrock can be re-added post-launch if users request them.
Allow resolving keys of any category (ai, voice, etc) by provider name
Resolve BYOK provider keys from Gatekeeper's vault as an overlay on synapse-api keys, with moka-backed caching and event-driven invalidation via Vortex webhook events.
Previously the auth middleware passed through requests with no Authorization header or non-synapse tokens, allowing unauthenticated access to upstream providers. Now returns 401 for missing or invalid-format tokens on non-public paths.
Bump changesets deps to latest, bump changesets/action to v1.7.0, fix repo name in changeset config, add missing config fields, add workflow_dispatch and version_commit detection, add changelog extraction in publish job, add timeouts, add .changeset/README.md, add node_modules to gitignore, and track bun.lock.
CORS origin updated from dashboard.synapse.omni.dev to synapse.omni.dev. Upstream 429 responses now return RateLimited instead of Upstream error, triggering equivalence group failover to alternative providers.
OPTIONS requests now bypass auth middleware so the CORS layer can handle preflight. Upstream 401/403 errors map to LlmError::Unauthorized (non-retryable) instead of LlmError::Upstream, returning a clear 401 to the client rather than a misleading 502 after failed failover.
Add Manual variant to KeyMode for UI-created API keys (treated as managed billing). Change token limit fields from u64 to i64 so the -1 unlimited sentinel from synapse-api can be deserialized.
Bump toolchain from 1.90.0 to 1.93.0 for AWS SDK compat. Remove invalid [dev-dependencies] from workspace manifest. Update all Cargo dependencies via cargo update.
|
Renovate Ignore NotificationBecause you closed this PR without merging, Renovate will ignore this update ( If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR. |
This PR contains the following updates:
0.7→0.8Release Notes
programatik29/axum-server (axum-server)
v0.8.0Compare Source
Serveris now generic over connections, allowingaxum-serverto listen not just on TCP.rustls-pemfilewas replaced withrustls-pki-typesas it is now unmaintained.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.