Files
promptkit/docs/releases/v0.11.0.md

3.9 KiB

Promptkit v0.11.0

This release adds reliable, observable model execution and changes Promptkit's license to LGPL-3.0-or-later.

Summary

  • Built-in model calls can recover from selected transient HTTP failures.
  • Optional execution observations report attempts, timing, outcomes, and known token usage, including work completed before a run fails.
  • Public errors distinguish transport failures, malformed responses, and retry exhaustion without parsing diagnostic text.

Compatibility

The built-in client now defaults to two additional transient attempts. This can increase latency, request counts, and cost; retries do not guarantee exactly-once generation. Injected LLMClient implementations retain their own retry policy and are not automatically replayed. Existing generation timeouts apply per attempt, while the caller context governs the complete operation. See the provider integration contract.

Public retry and observation controls are additive. Existing successful-result usage semantics remain unchanged, and operational failures still return no partial RunResult. Observations distinguish unknown usage from reported zero; they are not a complete billing ledger. See the consumer guide and observation GoDoc.

Promptkit is now licensed under LGPL-3.0-or-later. Review the license summary, LGPL text, and accompanying GPL text before adoption or distribution. Previously published releases and dependency licenses are unchanged.

Upgrade

Update the dependency:

go get gitea.maximumdirect.net/eric/promptkit@v0.11.0

To retain single-attempt behavior for built-in generation, set Config.TransientRetries to a pointer to zero. RunRequest.TransientRetries can override the engine choice per request. Review any existing application or HTTP-transport retry loops to avoid unintentionally multiplying attempts. Transient retries and structural repairs have separate budgets; provide a caller deadline when a total execution time limit is needed.

Observation is opt-in through RunRequest.Observer, including for prepared execution. Callbacks are synchronous; shared observers must support concurrent runs. Injected clients can supply GenerateResponse.UsagePresence to explicitly report known zero counts. No observer or usage-presence changes are required for existing consumers. See the consumer guide for adoption and the offline example for a structured proposal-and-assessment workflow.

Changes

  • Centralized built-in retry coordination with cancellable backoff and provider retry timing. Retries and structural repair share existing backend capacity; backoff releases active permits without releasing logical run admission.
  • Added ErrTransport, ErrMalformedResponse, ErrRetriesExhausted, and RetryExhaustedError, retaining applicable underlying error identities.
  • Added request-scoped lifecycle observations and presence-aware token accounting for ordinary and prepared execution, without recording prompt/response bodies.
  • Isolated delegated operations' observation state and made injected-client attempt classifications consistent with terminal classifications.
  • Added an offline observation example and regression coverage for retry, repair, capacity, error, and observation interactions.
  • Adopted LGPL-3.0-or-later and streamlined the documented local release process.

Backend catalog selections are unchanged from v0.10.0: OpenRouter v2.20260922.1 and Rakestrawhome v2.20260922.0. See the release compatibility policy and migration identity mapping.