Skip to content

Commit 4bec29f

Browse files
authored
release: v0.19.3 (#3261)
* release: prepare v0.19.3 - Bump workspace version to 0.19.3 - Fix clippy::default_trait_access in summarization.rs tests - Fix clippy::field_reassign_with_default in quality_gate.rs tests - Fix clippy::doc_markdown in graph/store/tests.rs - Update splash snapshot for new version string * docs: update specs, user docs, and READMEs for v0.19.3 - Update specs: agent-loop (MARCH self-check, elicitation), MCP - Refresh book docs: graph memory (APEX-MEM), memory (quality gate), MCP (elicitation), CLI (--bare/--json/-y/--loop), code indexing - Update root README: tests badge, ClawVM typed pages, MemReader gate, APEX-MEM, MCP elicitation, MARCH self-check, scripted/CI mode - Update zeph-memory README: quality gate section, APEX-MEM in graph - Update zeph-context README: ClawVM typed-page compaction section * style: fix fmt in quality_gate.rs * fix(docs): correct relative links in quality-self-check.md
1 parent 02517ef commit 4bec29f

24 files changed

Lines changed: 1350 additions & 100 deletions

File tree

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.19.3] - 2026-04-19
10+
911
### Added
1012

1113
- **feat(memory): ClawVM-style typed page compaction for token-budget-aware context management** (#3221) —
@@ -4623,7 +4625,8 @@ let agent = Agent::new(provider, channel, &skills_prompt, executor);
46234625
- Agent::run() uses tokio::select! to race channel messages against shutdown signal
46244626

46254627
[0.16.0]: https://github.com/bug-ops/zeph/compare/v0.15.3...v0.16.0
4626-
[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.19.2...HEAD
4628+
[Unreleased]: https://github.com/bug-ops/zeph/compare/v0.19.3...HEAD
4629+
[0.19.3]: https://github.com/bug-ops/zeph/compare/v0.19.2...v0.19.3
46274630
[0.19.2]: https://github.com/bug-ops/zeph/compare/v0.19.1...v0.19.2
46284631
[0.19.1]: https://github.com/bug-ops/zeph/compare/v0.19.0...v0.19.1
46294632
[0.19.0]: https://github.com/bug-ops/zeph/compare/v0.18.6...v0.19.0

Cargo.lock

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

Cargo.toml

Lines changed: 26 additions & 26 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.95"
8-
version = "0.19.2"
8+
version = "0.19.3"
99
authors = ["bug-ops"]
1010
license = "MIT"
1111
repository = "https://github.com/bug-ops/zeph"
@@ -135,31 +135,31 @@ uuid = "1.23"
135135
walkdir = "2.5"
136136
wiremock = "0.6.5"
137137
zeroize = { version = "1.8.2", default-features = false }
138-
zeph-a2a = { path = "crates/zeph-a2a", version = "0.19.2" }
139-
zeph-bench = { path = "crates/zeph-bench", version = "0.19.2" }
140-
zeph-acp = { path = "crates/zeph-acp", version = "0.19.2" }
141-
zeph-db = { path = "crates/zeph-db", default-features = false, version = "0.19.2" }
142-
zeph-channels = { path = "crates/zeph-channels", version = "0.19.2" }
143-
zeph-common = { path = "crates/zeph-common", version = "0.19.2" }
144-
zeph-config = { path = "crates/zeph-config", version = "0.19.2" }
145-
zeph-commands = { path = "crates/zeph-commands", version = "0.19.2" }
146-
zeph-context = { path = "crates/zeph-context", version = "0.19.2" }
147-
zeph-core = { path = "crates/zeph-core", version = "0.19.2" }
148-
zeph-experiments = { path = "crates/zeph-experiments", version = "0.19.2" }
149-
zeph-gateway = { path = "crates/zeph-gateway", version = "0.19.2" }
150-
zeph-index = { path = "crates/zeph-index", version = "0.19.2" }
151-
zeph-llm = { path = "crates/zeph-llm", version = "0.19.2" }
152-
zeph-mcp = { path = "crates/zeph-mcp", version = "0.19.2" }
153-
zeph-memory = { path = "crates/zeph-memory", default-features = false, version = "0.19.2" }
154-
zeph-scheduler = { path = "crates/zeph-scheduler", version = "0.19.2" }
155-
zeph-skills = { path = "crates/zeph-skills", version = "0.19.2" }
156-
zeph-tools = { path = "crates/zeph-tools", version = "0.19.2" }
157-
zeph-tui = { path = "crates/zeph-tui", version = "0.19.2" }
158-
zeph-vault = { path = "crates/zeph-vault", version = "0.19.2" }
159-
zeph-orchestration = { path = "crates/zeph-orchestration", version = "0.19.2" }
160-
zeph-plugins = { path = "crates/zeph-plugins", version = "0.19.2" }
161-
zeph-sanitizer = { path = "crates/zeph-sanitizer", version = "0.19.2" }
162-
zeph-subagent = { path = "crates/zeph-subagent", version = "0.19.2" }
138+
zeph-a2a = { path = "crates/zeph-a2a", version = "0.19.3" }
139+
zeph-bench = { path = "crates/zeph-bench", version = "0.19.3" }
140+
zeph-acp = { path = "crates/zeph-acp", version = "0.19.3" }
141+
zeph-db = { path = "crates/zeph-db", default-features = false, version = "0.19.3" }
142+
zeph-channels = { path = "crates/zeph-channels", version = "0.19.3" }
143+
zeph-common = { path = "crates/zeph-common", version = "0.19.3" }
144+
zeph-config = { path = "crates/zeph-config", version = "0.19.3" }
145+
zeph-commands = { path = "crates/zeph-commands", version = "0.19.3" }
146+
zeph-context = { path = "crates/zeph-context", version = "0.19.3" }
147+
zeph-core = { path = "crates/zeph-core", version = "0.19.3" }
148+
zeph-experiments = { path = "crates/zeph-experiments", version = "0.19.3" }
149+
zeph-gateway = { path = "crates/zeph-gateway", version = "0.19.3" }
150+
zeph-index = { path = "crates/zeph-index", version = "0.19.3" }
151+
zeph-llm = { path = "crates/zeph-llm", version = "0.19.3" }
152+
zeph-mcp = { path = "crates/zeph-mcp", version = "0.19.3" }
153+
zeph-memory = { path = "crates/zeph-memory", default-features = false, version = "0.19.3" }
154+
zeph-scheduler = { path = "crates/zeph-scheduler", version = "0.19.3" }
155+
zeph-skills = { path = "crates/zeph-skills", version = "0.19.3" }
156+
zeph-tools = { path = "crates/zeph-tools", version = "0.19.3" }
157+
zeph-tui = { path = "crates/zeph-tui", version = "0.19.3" }
158+
zeph-vault = { path = "crates/zeph-vault", version = "0.19.3" }
159+
zeph-orchestration = { path = "crates/zeph-orchestration", version = "0.19.3" }
160+
zeph-plugins = { path = "crates/zeph-plugins", version = "0.19.3" }
161+
zeph-sanitizer = { path = "crates/zeph-sanitizer", version = "0.19.3" }
162+
zeph-subagent = { path = "crates/zeph-subagent", version = "0.19.3" }
163163

164164
[workspace.lints.rust]
165165
unsafe_code = "deny"

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[![Crates.io](https://img.shields.io/crates/v/zeph)](https://crates.io/crates/zeph)
77
[![docs](https://img.shields.io/badge/docs-book-blue)](https://bug-ops.github.io/zeph/)
88
[![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)
9-
[![Tests](https://img.shields.io/badge/tests-8647-brightgreen)](https://github.com/bug-ops/zeph/actions)
9+
[![Tests](https://img.shields.io/badge/tests-8506-brightgreen)](https://github.com/bug-ops/zeph/actions)
1010
[![codecov](https://codecov.io/gh/bug-ops/zeph/graph/badge.svg?token=S5O0GR9U6G)](https://codecov.io/gh/bug-ops/zeph)
1111
[![Crates](https://img.shields.io/badge/crates-25-orange)](https://github.com/bug-ops/zeph/tree/main/crates)
1212
[![MSRV](https://img.shields.io/badge/MSRV-1.95-blue)](https://www.rust-lang.org)
@@ -43,14 +43,14 @@ zeph # start the agent
4343
## Feature Highlights
4444

4545
- [x] **[Self-learning skills](https://bug-ops.github.io/zeph/advanced/self-learning.html)** — Agent-as-a-Judge feedback detection (fast regex path + rate-limited LLM path), Wilson score Bayesian ranking promotes skills that actually work, autonomous skill evolution triggered by clustered failures, RL-based SleepGate admission control prevents noise from polluting long-term memory
46-
- [x] **[Graph memory with SYNAPSE](https://bug-ops.github.io/zeph/concepts/graph-memory.html)** — five typed edge categories (Causal, Temporal, Semantic, CoOccurrence, Hierarchical) via MAGMA; spreading activation retrieval with hop-by-hop decay and lateral inhibition surfaces multi-hop connections; community detection clusters entities by topic; BFS recall injected alongside vector results each turn
46+
- [x] **[Graph memory with SYNAPSE](https://bug-ops.github.io/zeph/concepts/graph-memory.html)** — five typed edge categories (Causal, Temporal, Semantic, CoOccurrence, Hierarchical) via MAGMA; APEX-MEM append-only property graph with temporal supersession and ontology normalization; spreading activation retrieval with hop-by-hop decay and lateral inhibition surfaces multi-hop connections; community detection clusters entities by topic; BFS recall injected alongside vector results each turn
4747
- [x] **[Skills-first architecture](https://bug-ops.github.io/zeph/concepts/skills.html)** — YAML+Markdown skill files, hot-reload on edit, BM25+cosine hybrid retrieval with RRF fusion, Bayesian re-ranking
48-
- [x] **[Context engineering](https://bug-ops.github.io/zeph/advanced/context.html)** — three-tier compaction pipeline, HiAgent subgoal-aware eviction, failure-driven compression guidelines (ACON, ICLR 2026), Memex tool-output archival
49-
- [x] **[Semantic memory](https://bug-ops.github.io/zeph/concepts/memory.html)** — SQLite or PostgreSQL + Qdrant, MMR re-ranking, temporal decay, semantic response cache
48+
- [x] **[Context engineering](https://bug-ops.github.io/zeph/advanced/context.html)** — three-tier compaction pipeline, HiAgent subgoal-aware eviction, ClawVM typed pages with per-type fidelity invariants and compaction audit, failure-driven compression guidelines (ACON, ICLR 2026), Memex tool-output archival
49+
- [x] **[Semantic memory](https://bug-ops.github.io/zeph/concepts/memory.html)** — SQLite or PostgreSQL + Qdrant, MMR re-ranking, temporal decay, semantic response cache; MemReader quality gate scores writes on information value, reference completeness, and contradiction risk before long-term persistence
5050
- [x] **[Multi-model orchestration](https://bug-ops.github.io/zeph/advanced/complexity-triage.html)** — complexity triage routing (Simple/Medium/Complex/Expert), Thompson Sampling, cascade cost tiers, PILOT LinUCB bandit
5151
- [x] **[Hybrid inference](https://bug-ops.github.io/zeph/concepts/providers.html)** — Ollama, Claude, OpenAI, Gemini, any OpenAI-compatible API, or fully local via Candle (GGUF)
5252
- [x] **[Task orchestration](https://bug-ops.github.io/zeph/concepts/task-orchestration.html)** — DAG-based task graphs with LLM goal decomposition, parallel execution, plan template caching
53-
- [x] **[MCP client](https://bug-ops.github.io/zeph/guides/mcp.html)** — full tool exposure, OAuth 2.1 + PKCE for remote servers, 17-pattern injection detection, per-session tool quota, OAP authorization
53+
- [x] **[MCP client](https://bug-ops.github.io/zeph/guides/mcp.html)** — full tool exposure, OAuth 2.1 + PKCE for remote servers, 17-pattern injection detection, per-session tool quota, OAP authorization; server-driven elicitation routes structured credential/confirmation requests to the active channel
5454
- [x] **[Security sandbox](https://bug-ops.github.io/zeph/reference/security.html)** — age-encrypted vault, shell sandbox, file read sandbox, SSRF protection, PII filter, exfiltration guards
5555
- [x] **[ACP server](https://bug-ops.github.io/zeph/advanced/acp.html)** — stdio, HTTP+SSE, WebSocket transports for IDE integration (Zed, VS Code, Helix)
5656
- [x] **[A2A protocol](https://bug-ops.github.io/zeph/advanced/a2a.html)** — agent-to-agent delegation over JSON-RPC 2.0 with IBCT capability tokens
@@ -59,7 +59,9 @@ zeph # start the agent
5959
- [x] **[Multi-channel I/O](https://bug-ops.github.io/zeph/advanced/channels.html)** — CLI, Telegram, TUI, Discord, Slack — all with streaming, voice, and vision input
6060
- [x] **[OS sandbox](https://bug-ops.github.io/zeph/reference/security.html#sandbox)** — macOS Seatbelt + Linux Landlock isolation for tool execution; VIGIL verify-before-commit security gate; egress network logging
6161
- [x] **[Plugin system](https://bug-ops.github.io/zeph/advanced/plugins.html)** — install/remove skill packages via `zeph plugin add <url>`; runtime config overlay merge with tighten-only safety rules; hub install pipeline with trust escalation filter
62-
- [x] **[Session recap](https://bug-ops.github.io/zeph/advanced/sessions.html)**`/recap` command and configurable auto-summary shown on session resume
62+
- [x] **[Session recap](https://bug-ops.github.io/zeph/advanced/sessions.html)**`/recap` command and configurable auto-summary shown on session resume; `/loop` for repeating a prompt on a fixed schedule within a session
63+
- [x] **[MARCH self-check](https://bug-ops.github.io/zeph/advanced/quality.html)** — post-response factual consistency via Proposer+Checker LLM pipeline; extracts assertions, verifies against retrieved memory evidence, appends a flag marker on contradiction; configurable trigger, latency budget, and per-assertion timeout
64+
- [x] **[Scripted / CI mode](https://bug-ops.github.io/zeph/guides/scripted.html)**`--bare` skips memory init, skill loading, and watcher registration; `--json` emits newline-delimited JSON events for programmatic consumption; `-y` auto-confirms tool approvals
6365
- [x] **[LSP integration](https://bug-ops.github.io/zeph/guides/lsp.html)** — compiler-level code intelligence via rust-analyzer, pyright, gopls and others: type info, diagnostics, call hierarchy, safe rename, references — injected automatically into context after file writes and reads
6466
- [x] **[Code indexing](https://bug-ops.github.io/zeph/advanced/code-indexing.html)** — tree-sitter AST-based indexing (Rust, Python, JS, TS, Go), semantic search, repo map generation
6567
- [x] **[Document RAG](https://bug-ops.github.io/zeph/advanced/document-loaders.html)** — ingest `.txt`, `.md`, `.pdf` into Qdrant with automatic retrieval per turn

book/src/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
- [Model Orchestrator](advanced/orchestrator.md)
5050
- [Adaptive Inference](advanced/adaptive-inference.md)
5151
- [Complexity Triage Routing](advanced/complexity-triage.md)
52+
- [Quality Self-Check (MARCH)](advanced/quality-self-check.md)
5253
- [Self-Learning Skills](advanced/self-learning.md)
5354
- [Skill Trust & Security](advanced/skill-trust.md)
5455
- [Policy Enforcer](advanced/policy-enforcer.md)

book/src/advanced/code-indexing.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,31 @@ score_threshold = 0.25
264264
budget_ratio = 0.40
265265
```
266266

267+
## Automatic Code RAG Injection
268+
269+
When `[index]` is enabled with a `Qdrant` backend available and `mcp_enabled = false`, code context is automatically injected at context-assembly time. The retriever queries the code chunk collection using the current user message as the retrieval key, fetches the top-scoring chunks up to `budget_ratio` of the available context window, and appends them to the prompt as a `<code_context>` block.
270+
271+
**Activation conditions:**
272+
273+
- `[index] enabled = true`
274+
- `[index.retrieval] budget_ratio > 0`
275+
- Qdrant is available and accessible
276+
- MCP tool exposure is disabled (`mcp_enabled = false`; when both are enabled, MCP tools take priority to avoid duplication)
277+
278+
**Example context injection:**
279+
280+
When you write "implement a cache invalidation function", the agent's context assembly:
281+
282+
1. Embeds "implement a cache invalidation function" using the configured embedding model
283+
2. Queries Qdrant's `zeph_code_chunks` collection for semantically relevant code
284+
3. Fetches up to `max_chunks = 12` results with `score_threshold >= 0.25`
285+
4. Packs chunks into a `<code_context>` block (up to 40% of available tokens)
286+
5. Injects the block into the prompt
287+
288+
The retrieval is fail-open: if embedding, Qdrant queries, or scoring errors occur, the injection is silently skipped and the turn continues. No special tooling is required from the agent.
289+
290+
Use `budget_ratio = 0` to disable automatic injection while keeping the code index available for manual MCP tool queries via `symbol_definition`, `find_text_references`, etc.
291+
267292
## Supported Languages
268293

269294
All tree-sitter grammars are compiled into every build. Language sub-features on `zeph-index` (`lang-rust`, `lang-python`, `lang-js`, `lang-go`, `lang-config`) are all enabled by default and cannot be individually disabled in the standard build.

0 commit comments

Comments
 (0)