deps: bump go-llm-sdk to v0.3.3 and drop the local workspace overlay - #239
Merged
Merged
Conversation
v0.3.3 carries the DeepSeek thinking-mode fix: an empty reasoning_content is echoed on requests that carry tools, so a turn whose reasoning the provider elided no longer serializes without the key and no longer kills the rest of the tool loop with a 400. Bumping to the released module lets the local go.work overlay go away entirely, so every build resolves the same code: local dev, CI and release. The overlay existed only to develop the fix in place; now that it is released it is pure drift risk, because it made local binaries run unreleased code while CI and releases ran the pinned tag. Verified with no workspace present (GOWORK unset): go list -m github.com/BackendStack21/go-llm-sdk -> v0.3.3 go build ./... ok go test ./internal/llmclient/... ./internal/loop/... ./internal/session/... ok go test -race ./internal/llmclient/... ok go.mod: one line. go.sum: two. No other dependency movement.
….3 floor The dependency bump alone leaves the contract undocumented: PROVIDERS.md described the GPT-5.6 tools+reasoning route but said nothing about DeepSeek's reasoning_content replay rule, which is what breaks long tool loops on the older SDK. MIGRATION.md pinned "go-llm-sdk v0.3.2+" as the recommended floor. - PROVIDERS.md: a DeepSeek paragraph next to the GPT-5.6 one, stating that reasoning_content is required on every assistant turn of a tool-carrying request (including turns where the provider returned no reasoning), that v0.3.3+ echoes the key, and that v0.3.2 and older die mid-loop with the reported 400. - MIGRATION.md: the recommended pin moves to v0.3.3+ with the DeepSeek reason added alongside the existing GPT-5.6 and cache reasons. Docs only, no behaviour change.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
odek | 7f236fe | Commit Preview URL Branch Preview URL |
Sep 14 2026, 12:05 PM |
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
Bumps
go-llm-sdkto v0.3.3 and removes the localgo.workoverlay, so every build — local, CI and release — resolves the same published code.Why
v0.3.3 fixes DeepSeek thinking-mode tool loops. DeepSeek requires
reasoning_contentto be replayed on every assistant turn of a request carrying tools, including turns where the provider returned no reasoning of its own. The field wasomitempty, so such a turn serialized with no key and the API answered 400 on every later request in the loop. v0.3.3 echoes the key on tool-carrying requests.On v0.3.2 a long DeepSeek tool loop dies mid-run and then fails permanently.
Changes
go.mod:go-llm-sdkv0.3.2 → v0.3.3 (go.sum: two lines, no other dependency movement).go.workremoved. The overlay existed to develop the SDK fix in place. Now that it is released it is pure drift risk: it made local builds run unreleased code while CI and releases ran the pinned tag.docs/PROVIDERS.md: documents the DeepSeek replay requirement next to the existing GPT-5.6 note.docs/MIGRATION.md: the recommended pin moves from v0.3.2+ to v0.3.3+ with the DeepSeek reason added.Verification
With no workspace present (
GOWORKempty):go list -m github.com/BackendStack21/go-llm-sdkv0.3.3go build ./...cmd/odek)llmclient/loop/sessionllmclient-racegolangci-lint run ./...Note on CI
A re-run may be needed:
TestToolHeartbeat_LongRunningToolEmitsSignals(internal/loop/signal_test.go) is a pre-existing timing flake — it has tripped once in the last 15 runs onmain, passes 5/5 locally under-race, and the commit that triggered it was docs-only. Unrelated to this change.