Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: epicsagas/llm-kernel
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.12.0
Choose a base ref
...
head repository: epicsagas/llm-kernel
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.13.0
Choose a head ref
  • 1 commit
  • 50 files changed
  • 1 contributor

Commits on Jul 2, 2026

  1. release: v0.13.0 — error unification, LLM tool forwarding, MCP spec c…

    …ompliance (#53)
    
    * refactor(error)!: return KernelError from embedding and discovery APIs
    
    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`.
    
    * feat(llm): forward tools and response_format to providers
    
    `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.
    
    * feat(mcp): align server with the 2025-06-18 MCP spec
    
    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.
    
    * chore(release): v0.13.0
    
    - 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 authored Jul 2, 2026
    Configuration menu
    Copy the full SHA
    0d77833 View commit details
    Browse the repository at this point in the history
Loading