chore(deps): update rust crate clickhouse to 0.14#15
chore(deps): update rust crate clickhouse to 0.14#15renovate[bot] wants to merge 104 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
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.
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.
|
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.13→0.14Release Notes
ClickHouse/clickhouse-rs (clickhouse)
v0.14.2Compare Source
Added
Client::insert_formatted_with()andInsertFormattedfor inserting data in a chosen format with a specified SQL query. (#364)InsertFormatteddoes not buffer data by default, allowing precise control over when the data is sent. For best performance, ensure data is sent in larger chunks or use.buffered()to getBufInsertFormattedwhich implements buffering.CompressedData::new()andInsertFormatted::send_compressed().BufInsertFormattedalso implementstokio::io::AsyncWritefor composability.Client::set_optionto modify options through&mut Client(#375)Client::get_optionto read previously set options (#375)Query::paramthat callSerializer::serialize_bytes()are now supported.Vec<u8>and&[u8]serialize as an array of integers.Use a specialized type, e.g.
bytes::Bytesorserde_bytes::Bytesto bind a byte-string.Primitiveforbytes::Bytesandbytes::BytesMut(#376)Query::fetch_one().Fixed
clickhouse::serde::chrono::date(#371)Changed
clickhouse-server:headtag, reworked secrets access (#367)Queryno longer sets thereadonlyoption by default. (#377)when issuing queries via
GETrequests, but had poor interaction with settings profiles that setreadonly="2".v0.14.1Compare Source
Added
StreamforRowCursor. (#283, #340)on_commitcallback toInserter. (#307)with_roleandwith_default_rolesmethods toClient,Query,Insert, andInserter, allowing toexplicitly set the roles for executed queries. (#326)
Int256andUInt256ClickHouse types support. The client now provides two new convenience wrappers over[u8; 32]:clickhouse::types::Int256andclickhouse::types::UInt256. See the updated derive example. (#352)Fixed
u128/i128values to SQL queries using server-side params, the client now correctly serializes them asstrings without adding an unnecessary cast. (#322)
JSONtypes such asJSON(max_dynamic_paths=64, max_dynamic_types=8). (#350, Steffen911)Changed
RowCursorby reusing buffer capacity where possible. (#340)Query::fetch*methods will always use POST instead of GET. It is now allowed to changereadonlyvalue viaQuery::with_option. (#342)clickhouse::error::Error::SchemaMismatchinstead of panicking.(#346)
v0.14.0Compare Source
Removed
Client::watch()API is removed (#245).watch()andwatch_only_events()are removed (#245).Changed
Insert<_>should now be specified when callingclient.insert::<_>(). (#247)Client::insert()is now async. (#244)Inserter::write()is now async. (#244)Inserter::new()return justSelfinstead ofResult<Self>. (#244)RowBinaryWithNamesAndTypesis now used by default for query results. This may cause panics ifthe row struct definition does not match the database schema. Use
Client::with_validation(false)to revert to theprevious behavior which uses plain
RowBinaryformat for fetching rows. (#221, #244)test-utilfeature, it is now required to useClient::with_mock(&mock)to set up themock server, so it properly handles the response format and automatically disables parsing
RowBinaryWithNamesAndTypesheader parsing and validation. Additionally, it is not required to callwith_urlexplicitly. See the updated example.
Query::fetch_bytes()now expectsimpl AsRef<str>forformatinstead ofInto<String>.Most usages should not be affected, however, unless passing a custom type that implements the latter but not the former.
(#311)
RowBinaryWithNamesAndTypesformat usage, there might be an impact on fetch performance, which largelydepends on how the dataset is defined. If you notice decreased performance, consider disabling validation by using
Client::with_validation(false).HashMap<K, V>(orBTreeMap,IndexMap,DashMap, etc.).clickhouse-deriveis now published asclickhouse-macroson crates.io. The formerclickhouse-derivecrate is discontinued. (#318).Added
TimeandTime64types (#258).Client::with_validationbuilder method. Validation is enabled by default, meaning thatRowBinaryWithNamesAndTypesformat will be used to fetch rows from the database. If validation is disabled,RowBinaryformat will be used, similarly to the previous versions. (#221).clickhouse-typeswas added to the project workspace. This crate is required forRowBinaryWithNamesAndTypesstruct definition validation, as it contains ClickHouse data types AST, as well asfunctions and utilities to parse the types out of the ClickHouse server response. (#221).
serde_bytes::Bytesas hex string literals in query parameters (#250).#[clickhouse(crate = "...")]attribute for#[derive(Row)](#189, #292)Fixed
X-ClickHouse-Exception-Codein case of incorrect 200 OK responsethat could occur with ClickHouse server up to versions 24.x (#256).
?default_formatURL parameter instead of usingFORMATclause, allowing queries to havetrailing comments and/or semicolons (#267, #269, #311).
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.