mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-08-28 03:08:03 +00:00
* fix(stream): read 'reasoning' SSE field for vLLM 0.20.2 / NIM
vLLM 0.20.2 / NVIDIA NIM emit reasoning-parser output in the `reasoning` delta field; older builds use `reasoning_content`. stream_llm() read only the latter, so reasoning from models like Nemotron-3-Nano (--reasoning-parser) was silently dropped and never rendered. Accept either field.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(agent): keep reasoning_content only on the latest assistant turn
The agent loop echoed each round's reasoning back as `reasoning_content` on every assistant turn, assuming vendors ignore it. Nemotron's chat template re-injects ALL prior reasoning_content as <think> blocks, and the loop is trimmed only once (before it starts) — so reasoning accumulated unbounded across rounds, bloating context and feeding the model its own prior reasoning, which reinforced repetition/looping. Strip reasoning_content from earlier assistant turns so only the most recent round carries it (still satisfies DeepSeek's thinking-mode follow-up requirement).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(agent-ui): wrap each round's reasoning in its own <think> block
The streamed think-tag wrapper gated on whole-message substring checks (accumulated.includes('<think>')), which only ever wrapped ONE reasoning block per message. A multi-round agent response has a reasoning phase per round, so once round 1 closed its <think>...</think>, rounds 2+ reasoning was emitted unwrapped and leaked into the visible answer. Replace the substring checks with a stateful open/close flag that toggles per think/answer cycle, so each round's reasoning gets its own collapsible block. Single-turn chat is unchanged (one open, one close).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test(stream): reasoning/reasoning_content delta surfaces as thinking chunk
Covers @pewdiepie-archdaemon's requested regression: a streamed {reasoning: ...} delta emits a thinking chunk while {content: ...} streams as normal content; plus the older reasoning_content field for backward compat. Mirrors the #591 scenario.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| calendar | ||
| compare | ||
| editor | ||
| emailLibrary | ||
| research | ||
| a11y.js | ||
| admin.js | ||
| assistant.js | ||
| calendar.js | ||
| censor.js | ||
| chat.js | ||
| chatRenderer.js | ||
| chatStream.js | ||
| codeRunner.js | ||
| colorPicker.js | ||
| cookbook-diagnosis.js | ||
| cookbook-hwfit.js | ||
| cookbook.js | ||
| cookbookDownload.js | ||
| cookbookRunning.js | ||
| cookbookServe.js | ||
| document.js | ||
| documentLibrary.js | ||
| dragSort.js | ||
| emailInbox.js | ||
| emailLibrary.js | ||
| emojiPicker.js | ||
| escMenuStack.js | ||
| fileHandler.js | ||
| gallery.js | ||
| galleryEditor.js | ||
| group.js | ||
| init.js | ||
| keyboard-shortcuts.js | ||
| langIcons.js | ||
| markdown.js | ||
| memory.js | ||
| modalManager.js | ||
| modalSnap.js | ||
| modelPicker.js | ||
| models.js | ||
| modelSort.js | ||
| MODULE_SUMMARY.md | ||
| notes.js | ||
| package.json | ||
| platform.js | ||
| presets.js | ||
| providers.js | ||
| rag.js | ||
| researchSynapse.js | ||
| search-chat.js | ||
| search.js | ||
| section-management.js | ||
| sessions.js | ||
| settings.js | ||
| sidebar-layout.js | ||
| signature.js | ||
| skills.js | ||
| slashAutocomplete.js | ||
| slashCommands.js | ||
| spinner.js | ||
| storage.js | ||
| tasks.js | ||
| theme.js | ||
| tileManager.js | ||
| tourAutoplay.js | ||
| tourHints.js | ||
| tts-ai.js | ||
| ui.js | ||
| voiceRecorder.js | ||
| windowDrag.js | ||
| windowResize.js | ||