Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/lychee.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ exclude = [
"https://platform.claude.com/.*",
# Requires GitHub auth
"https://github.com/.*/security/advisories/.*",
# Gist — intermittently returns 404 in CI
"https://gist.github.com/egmontkob/.*",
# VS Marketplace — blocks CI user-agents
"https://marketplace.visualstudio.com/.*",
]

# Skip URLs that require authentication
Expand Down
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [Unreleased]

## [0.17.0] - 2026-03-23

### Added

- feat(llm): complexity triage routing (#2141) — new `LlmRoutingStrategy::Triage` routing mode that classifies each request into `Simple`, `Medium`, `Complex`, or `Expert` complexity tiers using a configurable classifier provider before dispatching to a tier-specific provider; `TriageRouter` in `zeph-llm` implements `LlmProvider` using `Box::pin` to break the recursive `AnyProvider` type cycle; classifier calls are wrapped in a configurable timeout (default 5 s) with fallback to the default tier on timeout or parse failure; context-window auto-escalation skips when `context_window()` returns `None`; `AtomicU64` metrics track classification counts and latencies per tier without locks; `[llm.complexity_routing]` TOML config with `triage_provider`, `tiers.*`, `triage_timeout_secs`, `fallback_strategy`; `AnyProvider::Triage` variant added; agent loop emits "Evaluating complexity..." status indicator during triage
Expand Down Expand Up @@ -2603,7 +2605,8 @@ let agent = Agent::new(provider, channel, &skills_prompt, executor);
- Agent::run() uses tokio::select! to race channel messages against shutdown signal

[0.16.0]: https://github.com/bug-ops/zeph/compare/v0.15.3...v0.16.0
[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.16.1...HEAD
[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.17.0...HEAD
[0.17.0]: https://github.com/bug-ops/zeph/compare/v0.16.1...v0.17.0
[0.16.1]: https://github.com/bug-ops/zeph/compare/v0.16.0...v0.16.1
[0.15.3]: https://github.com/bug-ops/zeph/compare/v0.15.2...v0.15.3
[0.15.2]: https://github.com/bug-ops/zeph/compare/v0.15.1...v0.15.2
Expand Down
82 changes: 52 additions & 30 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 21 additions & 21 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ resolver = "3"
[workspace.package]
edition = "2024"
rust-version = "1.88"
version = "0.16.1"
version = "0.17.0"
authors = ["bug-ops"]
license = "MIT"
repository = "https://github.com/bug-ops/zeph"
Expand Down Expand Up @@ -115,26 +115,26 @@ url = "2.5"
uuid = "1.22"
wiremock = "0.6.5"
zeroize = { version = "1", default-features = false }
zeph-a2a = { path = "crates/zeph-a2a", version = "0.16.1" }
zeph-acp = { path = "crates/zeph-acp", version = "0.16.1" }
zeph-channels = { path = "crates/zeph-channels", version = "0.16.1" }
zeph-common = { path = "crates/zeph-common", version = "0.16.1" }
zeph-config = { path = "crates/zeph-config", version = "0.16.1" }
zeph-core = { path = "crates/zeph-core", version = "0.16.1" }
zeph-experiments = { path = "crates/zeph-experiments", version = "0.16.1" }
zeph-gateway = { path = "crates/zeph-gateway", version = "0.16.1" }
zeph-index = { path = "crates/zeph-index", version = "0.16.1" }
zeph-llm = { path = "crates/zeph-llm", version = "0.16.1" }
zeph-mcp = { path = "crates/zeph-mcp", version = "0.16.1" }
zeph-memory = { path = "crates/zeph-memory", version = "0.16.1" }
zeph-scheduler = { path = "crates/zeph-scheduler", version = "0.16.1" }
zeph-skills = { path = "crates/zeph-skills", version = "0.16.1" }
zeph-tools = { path = "crates/zeph-tools", version = "0.16.1" }
zeph-tui = { path = "crates/zeph-tui", version = "0.16.1" }
zeph-vault = { path = "crates/zeph-vault", version = "0.16.1" }
zeph-orchestration = { path = "crates/zeph-orchestration", version = "0.16.1" }
zeph-sanitizer = { path = "crates/zeph-sanitizer", version = "0.16.1" }
zeph-subagent = { path = "crates/zeph-subagent", version = "0.16.1" }
zeph-a2a = { path = "crates/zeph-a2a", version = "0.17.0" }
zeph-acp = { path = "crates/zeph-acp", version = "0.17.0" }
zeph-channels = { path = "crates/zeph-channels", version = "0.17.0" }
zeph-common = { path = "crates/zeph-common", version = "0.17.0" }
zeph-config = { path = "crates/zeph-config", version = "0.17.0" }
zeph-core = { path = "crates/zeph-core", version = "0.17.0" }
zeph-experiments = { path = "crates/zeph-experiments", version = "0.17.0" }
zeph-gateway = { path = "crates/zeph-gateway", version = "0.17.0" }
zeph-index = { path = "crates/zeph-index", version = "0.17.0" }
zeph-llm = { path = "crates/zeph-llm", version = "0.17.0" }
zeph-mcp = { path = "crates/zeph-mcp", version = "0.17.0" }
zeph-memory = { path = "crates/zeph-memory", version = "0.17.0" }
zeph-scheduler = { path = "crates/zeph-scheduler", version = "0.17.0" }
zeph-skills = { path = "crates/zeph-skills", version = "0.17.0" }
zeph-tools = { path = "crates/zeph-tools", version = "0.17.0" }
zeph-tui = { path = "crates/zeph-tui", version = "0.17.0" }
zeph-vault = { path = "crates/zeph-vault", version = "0.17.0" }
zeph-orchestration = { path = "crates/zeph-orchestration", version = "0.17.0" }
zeph-sanitizer = { path = "crates/zeph-sanitizer", version = "0.17.0" }
zeph-subagent = { path = "crates/zeph-subagent", version = "0.17.0" }

[workspace.lints.rust]
unsafe_code = "deny"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
[![Crates.io](https://img.shields.io/crates/v/zeph)](https://crates.io/crates/zeph)
[![docs](https://img.shields.io/badge/docs-book-blue)](https://bug-ops.github.io/zeph/)
[![CI](https://img.shields.io/github/actions/workflow/status/bug-ops/zeph/ci.yml?branch=main&label=CI)](https://github.com/bug-ops/zeph/actions)
[![Tests](https://img.shields.io/badge/tests-6293-brightgreen)](https://github.com/bug-ops/zeph/actions)
[![Tests](https://img.shields.io/badge/tests-6406-brightgreen)](https://github.com/bug-ops/zeph/actions)
[![codecov](https://codecov.io/gh/bug-ops/zeph/graph/badge.svg?token=S5O0GR9U6G)](https://codecov.io/gh/bug-ops/zeph)
[![Crates](https://img.shields.io/badge/crates-20-orange)](https://github.com/bug-ops/zeph/tree/main/crates)
[![MSRV](https://img.shields.io/badge/MSRV-1.88-blue)](https://www.rust-lang.org)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ expression: output
│ ███████╗███████╗██║ ██║ ██║ │
│ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝ │
│ │
│ v0.16.1
│ v0.17.0
│ │
│ Type a message to start. │
│ │
Expand Down
Loading