Skip to content

Seven HPP/2 SDKs

Generated sources are committed for C++, C#, Go, Java, JavaScript, Python, and Rust. Each contains protobuf message types plus the same minimal SessionState contract.

contracts/v2/sdk/
├── cpp/
├── csharp/
├── go/
├── java/
├── javascript/
├── python/
└── rust/

Generation versions and every artifact hash live in contracts/v2/sdk/GENERATION.json. Regenerate only with the pinned repository script:

Terminal window
cd contracts
./scripts/generate-hpp2-sdks.sh
npm test

The generated layer is the frozen cross-language wire surface. Rust production plugins additionally use formless_host::hpp2_sdk for the UDS gRPC session, bounded queues, provider dispatch, broker calls, subscriptions, cancellation, and lifecycle commands.

  1. Allocate a unique correlation ID and next sequence.
  2. Register the request before sending its envelope.
  3. Accept zero or more non-terminal diagnostics/progress frames allowed by the contract.
  4. Complete exactly once on result, error, or cancellation.
  5. Record unknown or late terminals without mutating completed state.

Subscriptions are long-lived and are not bounded by an arbitrary request timeout. They remain active until cancellation, generation teardown, provider withdrawal, or a terminal stream condition. Apply bounded buffering and explicit backpressure rather than silently dropping lifecycle ownership.