4.4 KiB
Promptkit v0.19.0
This release completes two rounds of audit remediation, correcting error and diagnostic reporting and simplifying configuration, validation, and value ownership. It includes intentional compatibility changes for custom artifact readers, programmatic configuration sources, and schemas. The minimum supported Go version remains 1.27.0; ConfigKit remains at v1.1.0.
Compatibility And Upgrade
Consumers upgrading from v0.18.0 should review these changes:
- A successful
ArtifactReader.Readtransfers ownership of the returned artifact and its mutable body storage to Promptkit. Custom readers must stop mutating returned values through retained aliases. Readers that reuse scratch buffers must return independent storage. Promptkit retains its defensive body copy, but that copy does not make concurrent buffer reuse safe. See the extension guidance. - Provider maps passed through
ProfileSourceandBackendSourcenow use ConfigKit's native Mapping input forms directly: built-in scalars,[]any, andmap[string]anyrecursively. Convertjson.Numberand typed containers explicitly to supported values, choosing numeric precision appropriate to the application. The former recursive compatibility conversion is removed. Runtime execution overrides retain their separate accepted-value behavior. - Schemas used for local validation and native structured output must be self-contained. Move externally referenced definitions into the root document and use internal references or explicit schema IDs. References requiring another file or network resource, or relying on the source filename as a base, fail during preparation. Promptkit does not bundle external schemas. See the schema reference.
Prepared schemas no longer inherit the depth and node limits used when copying runtime provider values. Schemas previously rejected solely by those incidental limits may now be accepted; decoder/compiler checks and the self-contained schema requirement still apply.
No configuration-format migration is required from v0.18.0. After addressing any affected integrations:
go get go.maximumdirect.net/promptkit@v0.19.0
Errors And Diagnostics
Public errors and terminal observations now preserve the category of the
operation that failed even when an injected collaborator returns an error from
another Promptkit operation. Underlying causes remain available through
errors.Is and errors.As, without repeatedly duplicating nested cause trees.
Built-in generation preserves response-body read failures separately from malformed response content, and failures during request preparation are distinguished from dispatched attempts.
OpenRouter authentication diagnostics bound response recognition to 1 MiB.
An oversized HTTP 200 response reports
SmokeTestReasonAuthenticationResponseLimitExceeded, leaving credential
acceptance unknown. Cancellation during the read remains an interruption.
Consumers that enumerate diagnostic reasons should handle the new reason;
see the diagnostic integration contract.
Internal Simplification And Ownership
Prompt lookup and rendering now consistently use captured configuration, and smoke syntax and schema checks share the prepared output-validation lifecycle. Unused routing defaults, alternate private workflows, and duplicate wire representations have been removed.
Provider-setting resolution, inspection, prepared details, and smoke reports avoid redundant validation and copying of already accepted values. Prepared execution shares one private redacted metadata snapshot while preserving independent caller-visible values. Provider values are detached before custom JSON encoders run, protecting retained metadata from encoder-side mutation.
Requirement analysis, namespace-filtered listings, and repair-feedback construction also avoid unnecessary traversal and temporary allocation. These changes preserve existing request isolation and execution behavior without introducing new performance guarantees.