Skip to content

Releases: x2d7/interlude

v0.3.1

10 Mar 22:45

Choose a tag to compare

v0.3.1

"If it happened, emit it."

Events improvement release — richer stream lifecycle, tool call visibility, and several bug fixes.

Deprecations

  • EventNew* aliases (EventNewToken, EventNewToolCall, etc.) — use EventToken, EventToolCall (#49) (removed in v0.4.0)
  • StreamEvent.GetType — unexported, interface is now sealed (#49)

Bug Fixes

  • Goroutine leak in ApproveWaiter.Resolve on context cancellation — resolveSync now selects on ctx.Done() (#48)
  • EventToolCall double resolution when copied — answered field replaced with shared *atomic.Bool (#52)
  • Resolve() on an already-resolved tool call silently did nothing — now returns ErrAlreadyResolved (#52, #45)

Features

  • New stream events: EventCompletionStarted, EventToolCallToken, EventToolCallResolved (#50, #41)
  • Tool execution results emitted to event stream as EventToolMessage (#50, #46)
  • EventCompletionEnded.ToolCalls — collects all tool calls from the current generation (#50, #47)
  • JSON serialization for stream events via MarshalEvent / UnmarshalEvent (#49, #39)
  • Configurable Chat.DeclinedToolMessage field, default: "Tool call declined" (#52, #42)

Changes

  • Event types renamed for idiomatic Go style: EventNew*Event* (#49, #40)
  • eventType switched from uint/iota to string constants (#49)

v0.3.0

22 Feb 12:56

Choose a tag to compare

"The zero value is useful."

Minor release — contains one breaking API change.

Bug Fixes

  • Chat{} without Tools field panicked on first Session() call — ensureDefaults() now initializes nil Messages and Tools lazily (#31)

Breaking Changes

  • NewTools() now returns *Tools instead of Tools — callers that stored the result in a variable and passed &toolList must drop the & (#32)

Other

  • Examples and documentation updated to reflect new constructor signatures (#34)

v0.2.2

19 Feb 22:53
4939acb

Choose a tag to compare

v0.2.2

"Minor version numbers are for when you're ashamed of the changes."

Patch release — no breaking API changes.

Bug Fixes

  • Models losing memorySession was appending assistant responses as EventNewToken instead of EventNewAssistantMessage; since SyncInput is not required to sync streaming-only events, assistant turns were silently dropped from context on every subsequent request (#26)

v0.2.1

19 Feb 20:34
856f693

Choose a tag to compare

v0.2.1

Patch release — no breaking API changes.

Bug Fixes

  • Partial tool call assembly — providers that stream tool call arguments in chunks no longer deliver broken JSON to callers; Session now assembles fragments into complete events before forwarding (#22)
  • Primitive tool input unmarshalingNewTool now correctly handles primitive input types (string, int, bool, float64) via reflection; previously only structs worked reliably (#21)
  • Empty OpenAI streaming chunks — empty choices in OpenAI streaming responses no longer cause parse errors (#18)

Improvements

  • Stream.Next() now respects context cancellation
  • Session internals refactored into sessionState struct for maintainability
  • Tool call events are dispatched as soon as fully assembled, not batched at end of generation

v0.2.0 — Tools refactor, schema & CI

18 Feb 21:40

Choose a tag to compare

  • ci: enforce coverage threshold on PRs targeting main (e390c5d)
  • fix(tests): fix non-deterministic session tests for CI (e543541)
  • Merge pull request #15 from x2d7/3-tests (9566320)
  • fix(chat): replace direct slice append with thread-safe AddEvent method (race condition fix) (2f038c4)
  • chore: go fmt (2bf2b06)
  • test(openai): add comprehensive unit tests for openai connector (b2fb526)
  • refactor(connect/openai): extract sseStreamer interface for testability (6e955a5)
  • test: add tests for chat generation and helpers (9fff5af)
  • test(chat): relax race-condition assertion in InnerCtxDone test (f37fdd0)
  • test(chat): add resolveSync helper and test ctx cancellation in inner select ctx.Done (6b8b0ec)
  • test: add test for ApproveWaiter context cancellation during collection loop (0d63de9)
  • test(chat): add unit tests for Messages and ApproveWaiter types (2cf2a60)
  • test: add tests for auto-increment ID feature in Add and nextID (4f73574)
  • fix: resolve auto-increment ID assignment for tools (d52942c)
  • test: add GetSchema cache and panic recovery tests (5362e2f)
  • chore: go fmt (73bd838)
  • test(chat/tools): add edge case tests for tool execution and creation (877332a)
  • fix: handle unsupported types in JSON schema generation (1360c0e)
  • test: add tool schema generation and execution tests for NewTool (e317ad3)
  • tests: add unit tests for tools package (644991c)
  • fix: Tools.Add match tests according to testing plan (e0a85ad)
  • fix gofmt command to check all files in the repository (c1ab3c4)
  • revert "ci: use go 1.26" (8d460e4)
  • fix: typo in workflow file path (6dca9cb)
  • ci: add test and coverage workflow (0c34bc0)
  • chore: add missing dependencies to go.sum (adf11e3)
  • Merge pull request #9 from x2d7/8-refactoring-tools (be1c308)
  • feat(tools): add support for primitive types in tools (d132721)
  • refactor(tools): unexport GetInputStructType helper (62b1780)
  • chore: go fmt (80e8de1)
  • fix(chat/tools): skip duplicate ID check when auto-increment is enabled (5e8f0a3)
  • feat(chat/tools): add functional options for tool ID customization (5c12d4e)
  • fix(tools): populate tool ID in Snapshot method (9b51b52)
  • refactor(tools): rename Name field to Id in tool struct (9c1cc94)
  • refactor(tools): extract schema generation related code to schema.go (1f6cef3)
  • fix(chat/tools): initialize tools map and correct slice allocation (a1771b3)
  • refactor(chat/tools): replace slice storage with map and add Remove method (560eba6)
  • refactor(chat/tools): unexport ToolFunction type (e4b17e3)
  • refactor(chat/tools): unexport Func field to function (6890946)
  • refactor(tools): unexport Tool type, enexport Tool.Schema and add GetSchema method instead (1237cf2)
  • refactor(chat/tools): replace manual RLock with Snapshot in Execute (705e14b)
  • refactor(chat/tools): change ToolFunction input type from any to string (8caa0b3)
  • refactor(tools): simplify Execute signature (86d3731)
  • chore(tools): add TODOs for primitive tool inputs and schema getter method (2a10efd)
  • chore(chat/tools): add TODO for Tools refactoring plans (a531a87)
  • refactor(tools): remove redundant InputType field from Tool struct (ad2d615)
  • chore(gitignore): remove .old_code entry (3047545)

v0.1.0 – Major API refactor & provider abstraction

08 Feb 18:06
c032896

Choose a tag to compare

Major release with a full API refactor.

  • Introduced provider-agnostic LLM Client interface
  • Chat redesigned around abstract provider model
  • OpenAI now used only inside a thin client wrapper implementation
  • Reworked streaming, events, and tool flow