opencode-thinking-fix 3.3.2 → 3.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +7 -5
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -90,7 +90,7 @@ What this repo does about it:
90
90
  - **The proxy** is a smarter middle-man that sits between OpenCode and the teacher. It **reads the real sticky note off each answer, remembers it, and pastes the actual writing back** into the next message. Now the teacher remembers, and your friend stays sharp. (v3 rewrote the proxy so it does this with almost zero slowdown — see below.)
91
91
  - **The watchdog** is just a babysitter that restarts the proxy if it ever crashes.
92
92
 
93
- Bottom line: **the proxy is what makes the AI actually remember its thinking. The plugin is a safety net. The watchdog keeps the lights on.**
93
+ Bottom line: the proxy is what makes the AI actually remember its thinking. The plugin is a seatbelt for the rare hard 400 that still slips through. The watchdog keeps the lights on.
94
94
 
95
95
  ---
96
96
 
@@ -199,7 +199,7 @@ See also: [OpenCode plugin docs](https://opencode.ai/docs/plugins)
199
199
  - [Why you've probably never seen it](#why-youve-probably-never-seen-it)
200
200
  - [The evidence](#the-evidence)
201
201
  - [For the skeptics](#for-the-skeptics)
202
- - [Option 1: Plugin (safety net)](#option-1-plugin-safety-net)
202
+ - [Option 1: Plugin (partial safety net)](#option-1-plugin-partial-safety-net)
203
203
  - [Option 2: Proxy (replays real reasoning)](#option-2-proxy-replays-real-reasoning)
204
204
  - [Option 3: Watchdog (auto-recovery)](#option-3-watchdog-auto-recovery)
205
205
  - [How they work together](#how-they-work-together)
@@ -232,7 +232,7 @@ systemic, not a single tool's bug. This repo fixes it. Three layers, pick what y
232
232
 
233
233
  ---
234
234
 
235
- ## Option 1: plugin (safety net)
235
+ ## Option 1: plugin (partial safety net)
236
236
 
237
237
  ### Install via npm (recommended)
238
238
 
@@ -253,7 +253,9 @@ It also handles `reasoning` for the OpenCode Go provider, and patches empty `con
253
253
 
254
254
  No config file changes. No build step. OpenCode compiles `.ts` plugins when it starts.
255
255
 
256
- **The catch:** the plugin fills in empty strings, not your model's actual prior thinking. DeepSeek, Kimi K2.5/K2.6, GLM, and MiMo accept empty strings fine, your conversation works but the model does not see its earlier reasoning. Kimi K2.7 Code requires the field to be present; present-but-empty is accepted.
256
+ **Why keep it when the 400 is mostly resolved?** The hard 400 no longer fires on most gateways, but it still happens once in a while: on native DeepSeek tool-call turns, on present-required models like Kimi K2.7 Code, and whenever the proxy is down mid-session. Keeping the field present costs nothing and removes that failure class entirely, so it stays as insurance rather than the main fix.
257
+
258
+ **The catch:** the plugin fills in empty strings, not your model's actual prior thinking. DeepSeek, Kimi K2.5/K2.6, GLM, and MiMo accept empty strings fine, your conversation works but the model does not see its earlier reasoning. Kimi K2.7 Code requires the field to be present; present-but-empty is accepted. On native DeepSeek tool-call turns even a present-but-empty field is treated as missing, so the proxy's real cached text is what satisfies that contract.
257
259
 
258
260
  ---
259
261
 
@@ -382,7 +384,7 @@ OpenCode → [plugin patches missing reasoning_content/reasoning]
382
384
  → API
383
385
  ```
384
386
 
385
- The plugin is the safety net. If the proxy goes down, the plugin still injects empty strings so reasoning is never missing from the request. If the proxy is up, its cached text takes priority because the plugin sees the field is already filled in. Either way, your conversation keeps its thinking.
387
+ The plugin is partial insurance. The hard 400 is mostly gone from modern gateways, but it still fires once in a while — native DeepSeek tool-call turns, present-required models, or a proxy that is down mid-session. When that happens the plugin keeps the field present so the request survives; on empty-tolerant gateways the empty string is accepted, and on stricter ones the proxy's real cached text takes over because the plugin sees the field is already filled in. The proxy is the actual fix. The plugin is the seatbelt you hope never to need.
386
388
 
387
389
  ---
388
390
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-thinking-fix",
3
- "version": "3.3.2",
3
+ "version": "3.3.3",
4
4
  "description": "Restores reasoning content dropped from multi-turn OpenCode conversations (DeepSeek, Kimi, GLM, MiMo, MiniMax, OpenCode Go, OpenRouter). Plugin + proxy + watchdog.",
5
5
  "type": "module",
6
6
  "license": "MIT",