opencode-thinking-fix 3.3.1 → 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 +11 -5
  2. package/package.json +3 -2
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
 
@@ -146,6 +146,10 @@ As of 3.2.0, the plugin is optional. The shipped npm plugin still contains the t
146
146
  | **CLI** | `opencode plugin opencode-thinking-fix` | Scripting |
147
147
  | **Manual** | Add `"plugin": ["opencode-thinking-fix"]` to `opencode.json` | Version pinning |
148
148
 
149
+ ### Already installed? Update
150
+
151
+ Versions before 3.3 do not cover OpenRouter or the OpenCode Zen free-tier lane. Update inside OpenCode (`Ctrl+P` → install plugin → `opencode-thinking-fix`) or with `opencode plugin opencode-thinking-fix`, then restart. The plugin self-detects reasoning models, so updating is safe on non-reasoning setups too.
152
+
149
153
  ### Method 1: TUI (press `Ctrl+P` while OpenCode is running)
150
154
 
151
155
  1. Press `Ctrl+P` to open the command palette.
@@ -195,7 +199,7 @@ See also: [OpenCode plugin docs](https://opencode.ai/docs/plugins)
195
199
  - [Why you've probably never seen it](#why-youve-probably-never-seen-it)
196
200
  - [The evidence](#the-evidence)
197
201
  - [For the skeptics](#for-the-skeptics)
198
- - [Option 1: Plugin (safety net)](#option-1-plugin-safety-net)
202
+ - [Option 1: Plugin (partial safety net)](#option-1-plugin-partial-safety-net)
199
203
  - [Option 2: Proxy (replays real reasoning)](#option-2-proxy-replays-real-reasoning)
200
204
  - [Option 3: Watchdog (auto-recovery)](#option-3-watchdog-auto-recovery)
201
205
  - [How they work together](#how-they-work-together)
@@ -228,7 +232,7 @@ systemic, not a single tool's bug. This repo fixes it. Three layers, pick what y
228
232
 
229
233
  ---
230
234
 
231
- ## Option 1: plugin (safety net)
235
+ ## Option 1: plugin (partial safety net)
232
236
 
233
237
  ### Install via npm (recommended)
234
238
 
@@ -249,7 +253,9 @@ It also handles `reasoning` for the OpenCode Go provider, and patches empty `con
249
253
 
250
254
  No config file changes. No build step. OpenCode compiles `.ts` plugins when it starts.
251
255
 
252
- **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.
253
259
 
254
260
  ---
255
261
 
@@ -378,7 +384,7 @@ OpenCode → [plugin patches missing reasoning_content/reasoning]
378
384
  → API
379
385
  ```
380
386
 
381
- 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.
382
388
 
383
389
  ---
384
390
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "opencode-thinking-fix",
3
- "version": "3.3.1",
4
- "description": "Restores reasoning content dropped from multi-turn OpenCode conversations (DeepSeek, Kimi, GLM, MiMo, MiniMax, OpenCode Go). Plugin + proxy + watchdog.",
3
+ "version": "3.3.3",
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",
7
7
  "oc-plugin": [
@@ -20,6 +20,7 @@
20
20
  "zhipu",
21
21
  "mimo",
22
22
  "minimax",
23
+ "openrouter",
23
24
  "xiaomi-mimo",
24
25
  "reasoning-content",
25
26
  "reasoning_content",