Skip to content

Commit 51113a9

Browse files
authored
release: v0.11.3 (#681)
* release: prepare v0.11.3 * docs: update documentation and READMEs for v0.11.3
1 parent c50e5c0 commit 51113a9

File tree

27 files changed

+204
-69
lines changed

27 files changed

+204
-69
lines changed

CHANGELOG.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

77
## [Unreleased]
88

9+
## [0.11.3] - 2026-02-20
10+
911
### Added
1012
- `LoopbackChannel` / `LoopbackHandle` / `LoopbackEvent` in zeph-core — headless channel for daemon mode, pairs with a handle that exposes `input_tx` / `output_rx` for programmatic agent I/O
1113
- `ProcessorEvent` enum in zeph-a2a server — streaming event type replacing synchronous `ProcessResult`; `TaskProcessor::process` now accepts an `mpsc::Sender<ProcessorEvent>` and returns `Result<(), A2aError>`
@@ -1051,7 +1053,8 @@ let agent = Agent::new(provider, channel, &skills_prompt, executor);
10511053
- Agent calls channel.send_typing() before each LLM request
10521054
- Agent::run() uses tokio::select! to race channel messages against shutdown signal
10531055

1054-
[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.11.2...HEAD
1056+
[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.11.3...HEAD
1057+
[0.11.3]: https://github.com/bug-ops/zeph/compare/v0.11.2...v0.11.3
10551058
[0.11.2]: https://github.com/bug-ops/zeph/compare/v0.11.1...v0.11.2
10561059
[0.11.1]: https://github.com/bug-ops/zeph/compare/v0.11.0...v0.11.1
10571060
[0.11.0]: https://github.com/bug-ops/zeph/compare/v0.10.0...v0.11.0

Cargo.lock

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ resolver = "3"
55
[workspace.package]
66
edition = "2024"
77
rust-version = "1.88"
8-
version = "0.11.2"
8+
version = "0.11.3"
99
authors = ["bug-ops"]
1010
license = "MIT"
1111
repository = "https://github.com/bug-ops/zeph"
@@ -89,18 +89,18 @@ unicode-width = "0.2"
8989
url = "2.5"
9090
uuid = "1.21"
9191
wiremock = "0.6.5"
92-
zeph-a2a = { path = "crates/zeph-a2a", version = "0.11.2" }
93-
zeph-channels = { path = "crates/zeph-channels", version = "0.11.2" }
94-
zeph-core = { path = "crates/zeph-core", version = "0.11.2" }
95-
zeph-gateway = { path = "crates/zeph-gateway", version = "0.11.2" }
96-
zeph-index = { path = "crates/zeph-index", version = "0.11.2" }
97-
zeph-llm = { path = "crates/zeph-llm", version = "0.11.2" }
98-
zeph-mcp = { path = "crates/zeph-mcp", version = "0.11.2" }
99-
zeph-memory = { path = "crates/zeph-memory", version = "0.11.2" }
100-
zeph-scheduler = { path = "crates/zeph-scheduler", version = "0.11.2" }
101-
zeph-skills = { path = "crates/zeph-skills", version = "0.11.2" }
102-
zeph-tools = { path = "crates/zeph-tools", version = "0.11.2" }
103-
zeph-tui = { path = "crates/zeph-tui", version = "0.11.2" }
92+
zeph-a2a = { path = "crates/zeph-a2a", version = "0.11.3" }
93+
zeph-channels = { path = "crates/zeph-channels", version = "0.11.3" }
94+
zeph-core = { path = "crates/zeph-core", version = "0.11.3" }
95+
zeph-gateway = { path = "crates/zeph-gateway", version = "0.11.3" }
96+
zeph-index = { path = "crates/zeph-index", version = "0.11.3" }
97+
zeph-llm = { path = "crates/zeph-llm", version = "0.11.3" }
98+
zeph-mcp = { path = "crates/zeph-mcp", version = "0.11.3" }
99+
zeph-memory = { path = "crates/zeph-memory", version = "0.11.3" }
100+
zeph-scheduler = { path = "crates/zeph-scheduler", version = "0.11.3" }
101+
zeph-skills = { path = "crates/zeph-skills", version = "0.11.3" }
102+
zeph-tools = { path = "crates/zeph-tools", version = "0.11.3" }
103+
zeph-tui = { path = "crates/zeph-tui", version = "0.11.3" }
104104

105105
[workspace.lints.clippy]
106106
all = "warn"

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ flowchart TD
205205
| **File sandbox** | Writes outside allowed paths |
206206
| **Tool permissions** | Glob-based allow/ask/deny policy per tool |
207207
| **Destructive command gate** | Accidental `rm -rf`, `DROP TABLE`, etc. |
208-
| **Secret redaction** | API keys leaking into context or logs (6 provider patterns) |
208+
| **Secret redaction** | API keys leaking into context or logs (9 provider patterns, regex-based) |
209209
| **SSRF protection** | Agent and MCP client requests to internal networks |
210210
| **Audit logging** | Full tool execution trace for forensics |
211211
| **Rate limiter** | TTL-based eviction, per-IP limits on gateway |
@@ -262,7 +262,7 @@ Skills **evolve**: failure detection triggers self-reflection, and the agent gen
262262

263263
| Protocol | What It Does |
264264
|----------|-------------|
265-
| **MCP** | Connect external tool servers (stdio + HTTP) with SSRF protection |
265+
| **MCP** | Connect external tool servers (stdio + HTTP) with SSRF protection, command allowlist, and env var blocklist |
266266
| **A2A** | Agent-to-agent communication via JSON-RPC 2.0 with SSE streaming |
267267
| **Audio input** | Speech-to-text via OpenAI Whisper API or local Candle Whisper (offline, feature-gated); Telegram and Slack audio files transcribed automatically |
268268
| **Vision** | Image input via CLI (`/image`), TUI (`/image`), and Telegram photo messages; supported by Claude, OpenAI, and Ollama providers (20 MB max, automatic MIME detection) |

crates/zeph-a2a/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Implements the Agent-to-Agent (A2A) protocol over JSON-RPC 2.0, enabling Zeph to
99
## Key Modules
1010

1111
- **client**`A2aClient` for sending tasks and messages to remote agents
12-
- **server**`A2aServer` exposing an A2A-compliant endpoint (requires `server` feature)
12+
- **server**`A2aServer` exposing an A2A-compliant endpoint with `ProcessorEvent` streaming via `mpsc::Sender` (requires `server` feature)
1313
- **card**`AgentCardBuilder` for constructing agent capability cards
1414
- **discovery**`AgentRegistry` for agent lookup and registration
1515
- **jsonrpc** — JSON-RPC 2.0 request/response types

crates/zeph-core/README.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,21 @@ Core orchestration crate for the Zeph agent. Manages the main agent loop, bootst
1010

1111
| Module | Description |
1212
|--------|-------------|
13-
| `agent` | `Agent` — main loop driving inference and tool execution |
13+
| `agent` | `Agent<C>` — main loop driving inference and tool execution; ToolExecutor erased via `Box<dyn ErasedToolExecutor>` |
14+
| `agent::tool_execution` | Tool call handling, redaction, and result processing |
15+
| `agent::message_queue` | Message queue management |
16+
| `agent::builder` | Agent builder API |
17+
| `agent::commands` | Chat command dispatch (skills, feedback, etc.) |
18+
| `agent::utils` | Shared agent utilities |
1419
| `bootstrap` | `AppBuilder` — fluent builder for application startup |
15-
| `channel` | `Channel` trait defining I/O adapters; `Attachment` / `AttachmentKind` for multimodal inputs (images, audio) |
16-
| `config` | TOML config with `ZEPH_*` env overrides |
20+
| `channel` | `Channel` trait defining I/O adapters; `LoopbackChannel` / `LoopbackHandle` for headless daemon I/O; `Attachment` / `AttachmentKind` for multimodal inputs |
21+
| `config` | TOML config with `ZEPH_*` env overrides; typed `ConfigError` (Io, Parse, Validation, Vault) |
1722
| `context` | LLM context assembly from history, skills, memory |
1823
| `cost` | Token cost tracking and budgeting |
19-
| `daemon` | Background daemon mode (optional feature) |
24+
| `daemon` | Background daemon mode with PID file lifecycle (optional feature) |
2025
| `metrics` | Runtime metrics collection |
2126
| `project` | Project-level context detection |
22-
| `redact` | Sensitive data redaction |
27+
| `redact` | Regex-based secret redaction (AWS, OpenAI, Anthropic, Google, GitLab, HuggingFace, npm, Docker) |
2328
| `vault` | Secret storage and resolution via vault providers (age-encrypted read/write) |
2429
| `diff` | Diff rendering utilities |
2530
| `pipeline` | Composable, type-safe step chains for multi-stage workflows |

crates/zeph-llm/README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,20 @@ Defines the `LlmProvider` trait and ships concrete backends for Ollama, Claude,
1010

1111
| Module | Description |
1212
|--------|-------------|
13-
| `provider` | `LlmProvider` trait — unified inference interface |
13+
| `provider` | `LlmProvider` trait — unified inference interface; `name()` returns `&str` (no longer `&'static str`) |
1414
| `ollama` | Ollama HTTP backend |
15-
| `claude` | Anthropic Claude backend |
16-
| `openai` | OpenAI backend |
15+
| `claude` | Anthropic Claude backend with `with_client()` builder for shared `reqwest::Client` |
16+
| `openai` | OpenAI backend with `with_client()` builder for shared `reqwest::Client` |
1717
| `compatible` | Generic OpenAI-compatible endpoint backend |
1818
| `candle_provider` | Local inference via Candle (optional feature) |
19-
| `orchestrator` | Multi-model coordination and fallback |
19+
| `orchestrator` | Multi-model coordination and fallback; `send_with_retry()` helper deduplicates retry logic |
2020
| `router` | Model selection and routing logic |
2121
| `vision` | Image input support — base64-encoded images in LLM requests; optional dedicated `vision_model` per provider |
22-
| `extractor` | `chat_typed<T>()` — typed LLM output via JSON Schema (`schemars`) |
22+
| `extractor` | `chat_typed<T>()` — typed LLM output via JSON Schema (`schemars`); per-`TypeId` schema caching |
23+
| `sse` | Shared `sse_to_chat_stream()` helpers for Claude and OpenAI SSE parsing |
2324
| `stt` | `SpeechToText` trait and `WhisperProvider` (OpenAI Whisper, feature-gated behind `stt`) |
2425
| `candle_whisper` | Local offline STT via Candle (whisper-tiny/base/small, feature-gated behind `candle`) |
26+
| `http` | `default_client()` — shared HTTP client with standard timeouts and user-agent |
2527
| `error` | `LlmError` — unified error type |
2628

2729
**Re-exports:** `LlmProvider`, `LlmError`

crates/zeph-mcp/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Implements the Model Context Protocol client for Zeph, managing connections to m
99
## Key Modules
1010

1111
- **client** — low-level MCP transport and session handling
12-
- **manager**`McpManager`, `McpTransport`, `ServerEntry` for multi-server lifecycle
12+
- **manager**`McpManager`, `McpTransport`, `ServerEntry` for multi-server lifecycle; command allowlist validation (npx, uvx, node, python3, docker, etc.), env var blocklist (LD_PRELOAD, DYLD_*, NODE_OPTIONS, etc.), and path separator rejection
1313
- **executor**`McpToolExecutor` bridging MCP tools into the `ToolExecutor` trait
1414
- **registry**`McpToolRegistry` for tool lookup and optional Qdrant-backed search
1515
- **tool**`McpTool` wrapper with schema and metadata

crates/zeph-memory/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ Includes a document ingestion subsystem for loading, chunking, and storing user
2323
| `document::pipeline` | `IngestionPipeline` — load, split, embed, store via Qdrant |
2424
| `vector_store` | `VectorStore` trait and `VectorPoint` types |
2525
| `embedding_store` | `EmbeddingStore` — high-level embedding CRUD |
26+
| `embeddable` | `Embeddable` trait and `EmbeddingRegistry<T>` — generic Qdrant sync/search for any embeddable type |
2627
| `types` | `ConversationId`, `MessageId`, shared types |
2728
| `error` | `MemoryError` — unified error type |
2829

29-
**Re-exports:** `MemoryError`, `QdrantOps`, `ConversationId`, `MessageId`, `Document`, `DocumentLoader`, `TextLoader`, `TextSplitter`, `IngestionPipeline`, `Chunk`, `SplitterConfig`, `DocumentError`, `DocumentMetadata`, `PdfLoader` (behind `pdf` feature)
30+
**Re-exports:** `MemoryError`, `QdrantOps`, `ConversationId`, `MessageId`, `Document`, `DocumentLoader`, `TextLoader`, `TextSplitter`, `IngestionPipeline`, `Chunk`, `SplitterConfig`, `DocumentError`, `DocumentMetadata`, `PdfLoader` (behind `pdf` feature), `Embeddable`, `EmbeddingRegistry`
3031

3132
## Features
3233

crates/zeph-scheduler/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ scheduler.register_handler(&TaskKind::UpdateCheck, Box::new(handler));
4747
Notification format sent via the channel:
4848

4949
```
50-
New version available: v0.12.0 (current: v0.11.2).
50+
New version available: v0.12.0 (current: v0.11.3).
5151
Update: https://github.com/bug-ops/zeph/releases/tag/v0.12.0
5252
```
5353

0 commit comments

Comments
 (0)