chore(deps): update rust crate ctor to 0.6.0#17
chore(deps): update rust crate ctor to 0.6.0#17renovate[bot] wants to merge 105 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
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.
Clippy 1.93 flags manual Default impls that can be derived. Replace manual impls with #[derive(Default)] + #[default] on Action and AnyOrArray enums.
Collapse multi-line `if` conditions onto single lines per updated rustfmt style rules. Fixes CI `cargo fmt --check` failure.
Use OTEL_EXPORTER_OTLP_ENDPOINT (standard name) instead of OTEL_ENDPOINT to match the Railway environment variable.
Railway's private network uses IPv6 DNS for `.railway.internal` domains. The default system resolver in the Wolfi container image cannot resolve these, causing gateway-to-API communication to fail. Adding the `hickory-dns` feature to reqwest enables async DNS resolution with proper IPv6 support.
|
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.5.0→0.6.0Configuration
📅 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.