# Promptkit v0.22.0 This minor release adds captured conversation exchanges, optional sequential coordination, and explicit execution-group summaries. Applications can continue or branch a conversation without reconstructing rendered history, while keeping response interpretation and workflow decisions in application code. ## Capture And Continue Conversations Set `RunRequest.CaptureExchange` to capture a completed run's effective messages and final assistant content. Supply its `RunResult.Exchange` as `ContinueFrom` on a new request to continue it. Exchanges are reusable, support independent branches and different engines, and expose detached history through `Details()`. Prepared execution also supports capture of the exact snapshot it executes. Internal structural-repair instructions and intermediate candidates are not conversation history. A completed result with failed structural validation can still be captured; an operational error returning no result creates no exchange. Follow-ups select their own profiles, output contracts, credentials, and sessions under ordinary request rules. See [capture and continuation guidance](../consumers/pkg-promptkit.md#capture-and-continue-a-conversation) and the [public exchange contract](../../exchange.go). ## Coordinate Application-Directed Turns `Engine.Coordinate` advances one conversation branch using an application callback and an additional-turn budget. The application selects the next request or stops; Promptkit handles turn progression and cancellation. Each completed run releases backend admission before the callback, allowing assessment calls to use the same backend. Stop and budget exhaustion are control-flow outcomes, not judgments of response acceptance. Transport retries and structural repairs remain separate from the turn budget. See the [coordination walkthrough](../consumers/pkg-promptkit.md#coordinate-application-directed-turns) and [coordinator GoDoc](../../coordinate.go) for callback and cancellation behavior. ## Collect Selected Execution Facts `ExecutionGroup` collects explicitly selected execution observations, while `ComposeObservers` combines groups with existing diagnostic observers. Detached group snapshots report member identities, terminal coverage, attempt/retry/repair counts, and available token totals without counting a run more than once. Terminal coverage remains distinct from token-usage completeness; membership is not inferred from ancestry or nested calls. See [execution-group guidance](../consumers/pkg-promptkit.md#collect-selected-execution-facts), the [group GoDoc](../../execution_group.go), and the updated [offline observation example](../../examples/go-library/observe/main.go). ## Efficiency And Compatibility History assembly and inspection avoid intermediate full-history copies. Observer composition retains storage only for selected callbacks and avoids fan-out closures for zero or one selected callback. Capture and coordination are opt-in; existing execution workflows and configuration formats need no migration from v0.21.0. The Go consumer minimum remains 1.27.0, and dependency versions are unchanged. Exported request, prepared, result, and observation structs gained fields; consumers using positional struct literals must switch to keyed literals. Continuation metadata adds `parent_run_id` to prepared/result JSON when applicable; the opaque exchange itself is excluded. Exchanges are in-process capabilities, not serialized restartable sessions. ```sh go get go.maximumdirect.net/promptkit@v0.22.0 ``` [COPYRIGHT](https://forge.maximumdirect.net/base-layer/promptkit/src/tag/v0.22.0/COPYRIGHT) | [LICENSE](https://forge.maximumdirect.net/base-layer/promptkit/src/tag/v0.22.0/LICENSE) | [ATTRIBUTION](https://forge.maximumdirect.net/base-layer/promptkit/src/tag/v0.22.0/docs/oss/attribution.md)