fix: full-context compaction summaries and turns that survive plugin reloads
Compaction summaries were written by haiku from a text copy of the chat capped at 400k characters, with tool results cut to 1000. On long 1M chats it saw a fraction of the conversation. The summary now resumes an in-memory fork of the chat's Claude session (resumeSessionAt + forkSession, no persistence) cut where OpenCode's summarized part ends, on the chat's model with the chat turn's system prompt and tools so it reads from the prompt cache. Without a resumable session it falls back to the history text sized to the model's window. OpenCode reloads a plugin by unloading its copy, then importing a fresh one. The unload stopped every parked turn, and the CLI recorded the pending tool calls as rejected by the user. Parked turns and proxy holders now live in the process, and the last release stops turns only after a grace period, so the reloaded copy resumes them. A rebuilt tool step now tells Claude an interruption came from the plugin, not the user. Tested: new compaction-resume and plugin-reload regressions (the latter fails on the previous code), full suite, live SDK fork/cut check, and a live opencode run with dist rebuilt mid-command.
B
Bohdan Triapitsyn committed
e8173a253d02674d405548e3bbe139c233cb098a
Parent: 2b2ffee