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
24 changes: 3 additions & 21 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## [Unreleased]

## [0.2.2] - 2026-07-29

### Added

- `ClientOpenStreamHandle::cancel(token, reason)`: a `Send`-safe way to cancel a
Expand All @@ -12,27 +14,7 @@
call without cleaning up. `cancel` mirrors `abort` (publishes the `abort` frame
and frees the reader-registry slot via the idempotent `abort`/`consumer_abort`
pair) but operates on the `Sync` handle, so cloning the handle into a task and
calling `cancel(token, reason)` works from any thread. Without it, a dropped
`ToolStreamCall` leaves the reader session lingering in the registry until the
keepalive sweep probe-times it out (`Probe timeout`).
- A general-purpose, public inbound-middleware seam on `NostrServerTransport`:
`add_inbound_middleware` with the `InboundMiddleware` trait, an `InboundContext`
describing the request, and an owned `Next`, letting callers observe, gate, or
transform an inbound request before it reaches the MCP handler. Behavior-preserving
when no middleware is registered.
- CEP-8 capability pricing and payments (in progress; foundational pieces, not yet a
usable payment flow):
- Payment protocol primitives: constants, `cap` / `pmi` / `payment_interaction` tag
builders and parsers, the notification and explicit-gating error `data` types, the
`PaymentProcessor` / `PaymentHandler` / `ResolvePrice` traits, and deterministic
fakes behind the `test-utils` feature.
- Canonical invocation identity: the SHA-256 of the RFC 8785 (JCS) serialization of
`{ method, params }` with `params._meta` removed, so a retry matches a paid
authorization regardless of per-request transport metadata. Includes cross-SDK
golden vectors.
- `AuthorizationStore`: a bounded, TTL-aware store of pending and granted payment
authorizations, with atomic single-use `claim` and check-and-set `try_set_pending`
semantics that are double-spend-safe under multi-threaded tokio.
calling `cancel(token, reason)` works from any thread.

### Fixed

Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "contextvm-sdk"
version = "0.2.1"
version = "0.2.2"
edition = "2021"
rust-version = "1.88"
description = "Rust SDK for the ContextVM protocol — MCP over Nostr"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ Or pin a published release from crates.io:

```toml
[dependencies]
contextvm-sdk = "0.2.1"
contextvm-sdk = "0.2.2"
```

## Quick Start
Expand Down
Loading