chore(deps): update rust crate agent-core to 0.6.0#13
chore(deps): update rust crate agent-core to 0.6.0#13renovate[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
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.1.0→0.6.0Release Notes
deepmesa/agent-core (agent-core)
v0.6.0Compare Source
Added
Event Sink Abstraction (Pluggable Frontends)
interfacemodule for custom frontend integrationEventSinktrait for receiving events from the engineChannelEventSink: Channel-backed sink with backpressure supportSimpleEventSink: Minimal stdout sink for CLI toolsInputSourcetrait for providing input to the engineChannelInputSource: Channel-backed input with helperchannel()methodPermissionPolicytrait for automatic permission handlingAutoApprovePolicy: Auto-approve all requests (headless/trusted environments)DenyAllPolicy: Deny all requests (sandboxed environments)InteractivePolicy: Forward all requests to user (default for TUI)PolicyDecisionenum withAllow,AllowWithGrant,Deny,AskUservariantssupports_interaction()method for handling user questions in headless modeAgentAir Frontend Methods
run_with_frontend(): Run agent with custom sink, source, and policyPermissionRequiredandBatchPermissionRequiredeventsSimplified Agent Setup
SimpleConfigstruct for quick agent configurationAgentAir::with_config(name, path, prompt): One-line agent creationChanged
agentmodule level for conveniencev0.5.0Compare Source
Added
Agent Skills Support
skillsmodule implementing the Agent Skills open formatSkillDiscoveryfor scanning directories for SKILL.md filesSkillRegistrythread-safe registry with XML generation for system prompts$PWD/.skills/(project) and~/.agent-air/skills/(user)AgentAir Skill Methods
load_skills(): Discover and register skills from configured pathsload_skills_from(): One-shot loading from custom pathsreload_skills(): Hot reload with added/removed trackingrefresh_session_skills(): Update session system prompts with current skillsadd_skill_path(): Add custom skill search directoriesskill_registry(): Access the skill registry directlyListSkillsTool
register_list_skills_tool()method on AgentAirChanged
AgentErrornow includesSessionNotFoundvariant for skill refresh errorsv0.4.0Compare Source
Changed
agent-air-runtime: Core engine (controller, client, permissions, tools)agent-air-tui: TUI frontend (ratatui, widgets, themes, commands)agent-air: Meta-crate re-exporting both (backwards compatible)v0.3.0Compare Source
Added
LLM Provider Support
Tools
Environment & Configuration
Changed
Fixed
Removed
v0.2.0Compare Source
Added
Changed
Documentation
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.