Skip to content

release: v0.13.0 — error unification, LLM tool forwarding, MCP spec compliance#53

Merged
epicsagas merged 4 commits into
mainfrom
release/v0.13.0
Jul 2, 2026
Merged

release: v0.13.0 — error unification, LLM tool forwarding, MCP spec compliance#53
epicsagas merged 4 commits into
mainfrom
release/v0.13.0

Conversation

@epicsagas

Copy link
Copy Markdown
Owner

Ships v0.13.0 on top of v0.12.0. (Rebased onto current main; supersedes the mistakenly-based #52.)

Highlights

  • refactor(error)! (breaking): embedding + discovery public APIs return KernelError instead of anyhow::Result — no more anyhow in the library's public surface. Also folds the LazyFastembedProvider loader path (LoadFn) onto KernelError, integrating with v0.12.0's panic-safe loader.
  • feat(llm): LLMRequest::tools and response_format are now forwarded to OpenAI/Anthropic (were silently dropped); tool calls are parsed back into LLMResponse::tool_calls.
  • feat(mcp): protocol 2025-06-18 negotiation, ping, prompts, string/number JSON-RPC ids, tools/call in-band isError, and correct wire format (inputSchema / mimeType).
  • fix: LazyFastembedProvider::embed_batch panic on truncated provider responses; CacheClient offloads blocking store I/O via spawn_blocking.
  • docs: version pins → 0.13.0, MCP quick-start example fixed (ToolDescription) across README + 10 i18n, graph-algorithm content propagated, ROADMAP/PROGRESS/SECURITY/CoC refreshed (incl. the real v0.11.0/v0.12.0 releases).
  • ci: isolated per-feature build/test matrix.

Verification (local, on the rebased tree)

  • cargo test --all-features — 599 passed, 0 failed, 13 ignored
  • cargo clippy --all-features -- -D warnings — clean
  • cargo fmt --all -- --check — clean
  • RUSTDOCFLAGS=-D warnings cargo doc --all-features --no-deps — clean

Breaking change

Downstream code matching on anyhow::Error from embedding/discovery must switch to KernelError. See CHANGELOG [0.13.0] for the full list.

🤖 Generated with Claude Code

epicsagas added 4 commits July 3, 2026 00:57
Unify the public error surface: `embedding` and `discovery` now return
`crate::error::Result` (`KernelError`) instead of `anyhow::Result`, so `anyhow`
no longer leaks through the library's public API. Adds `KernelError::Embedding`
and `KernelError::Discovery` (plus `::embedding` / `::discovery` constructors).

Touches the `EmbeddingProvider` / `VectorIndex` / `AsyncVectorIndex` traits, all
provider and index constructors, the `LazyFastembedProvider` loader path
(`LoadFn` / `load_catching_panics` now yield `KernelError`), `DiscoverySource`,
`chunk_batch`, `discovery::fetch*`, and `provider::sync::*`.

Also guards `LazyFastembedProvider::embed_batch` against an index-out-of-bounds
panic when the inner provider returns fewer vectors than inputs.

BREAKING CHANGE: embedding and discovery APIs return `KernelError` instead of
`anyhow::Error`.
`LLMRequest::tools` and `response_format` are now sent to the provider APIs
instead of being silently dropped: OpenAI receives `tools` (`type: "function"`)
and `response_format`; Anthropic receives `tools` (with `input_schema`) and, for
`ResponseFormat::JsonSchema`, `output_config.format`. Tool calls are parsed back
into the new `LLMResponse::tool_calls`; `finish_reason`, `id`, and `created` are
captured too.

Also offloads the synchronous `KvStore` read/write in `CacheClient::complete` to
`tokio::task::spawn_blocking`, so a slow or remote store no longer blocks the
async reactor on the hot path.
Protocol-version negotiation in `initialize`; `ping`; prompts (`prompts/list`,
`prompts/get`, `register_prompt` / `set_prompt_handler`, `PromptDescription` /
`PromptArgument`); `resources/templates/list`; correct wire-format field names
(`inputSchema` / `mimeType`); verbatim string/number JSON-RPC ids; and in-band
`tools/call` `isError` reporting (reserving `-32602` for an unknown tool).
Applies to both the stdio and HTTP/SSE transports.
- docs: bump version pins to 0.13.0 (README, QUICKSTART, 10 i18n READMEs); fix
  the MCP quick-start example (`Tool`/`JsonRpcRequest` → `ToolDescription`)
  across all 11 files; propagate the v0.10.0 graph-algorithm content into every
  feature table; refresh ROADMAP/PROGRESS (incl. the real v0.11.0/v0.12.0
  releases); fix the SECURITY supported-versions table and the CODE_OF_CONDUCT
  enforcement contact
- ci: isolated per-feature build/test matrix entries so a missing `#[cfg]` gate
  is caught even when a sibling feature is not co-enabled
- Cargo.toml: document the eval/eval-full and dynamic-linking exclusions from `full`
- bump version to 0.13.0, refresh CHANGELOG and lockfile
@epicsagas epicsagas merged commit 0d77833 into main Jul 2, 2026
38 checks passed
@epicsagas epicsagas deleted the release/v0.13.0 branch July 2, 2026 16:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant