Conversation
Updates Next() to accept context.Context for improved streaming control. - Update test calls with context.Background() - Remove deprecated empty event error handling tests
Client.Next cancellation via context + empty events fix
…pPrimitive execution part
tools execution wrapper unmarshal fix
…all assembling tests
support partial tool calls
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Merges three improvements from
dev: context cancellation hardening in the streaming layer, primitive type support in tool input unmarshaling, and partial tool call assembly inSession.Changes
#18 — Context cancellation in
Stream.Next()Stream.Next()now accepts acontext.Contextand respects cancellation mid-stream. Empty chunks from the OpenAI streaming response are handled gracefully instead of causing parse errors.#21 — Primitive type support in tool input unmarshaling
NewToolpreviously constructed the correctinputTypeviaensureInputStructType[T]()but always unmarshaled intoTdirectly — causing failures for primitive types (string,int,bool,float64). The execution wrapper now uses reflection to construct the appropriate container, so primitives are handled correctly alongside structs.#22 — Partial tool call assembly in
SessionProviders that stream tool calls in chunks (first event carries
CallID, subsequent events carry argument fragments) caused broken, incomplete JSON to be delivered to callers.Sessionnow assembles partial chunks into completeEventNewToolCallevents before forwarding them. Events are dispatched as soon as a call is fully assembled — not batched until end of generation — keeping withinterlude's streaming-first design.Also includes a refactor of
Sessioninternals: state moved into a dedicatedsessionStatestruct, flush and completion-end logic extracted into methods, andsendhelper unified across the handler.Tests
Stream.Next()andSessionat various lifecycle pointsExecute()coverage for primitive and struct tool inputs