Repository navigation
Track Eredu main 465cf519 (planned-session API port) - #2
Merged
Merged
Conversation
- Pin eredu, eredu-core and eredu-backend-mlx to jbg/eredu@465cf519 (MLX 0.32.3, new families, validated tool-call completion events). - native.rs: keep the PlannedModel returned by load_execution_plan (target-only), prepare through model_mut(), generate with GenerationRequest { output_mode: Semantic, control_handle: None, .. }, count SemanticEvent::ToolCallCompleted instead of the removed ToolCallEnd, and read NativeToolSupport::Unsupported { rejection }. - check-model path uses model_mut() for reset/synchronize. Portable verify (fmt, 13 mock tests, clippy -D warnings) passes locally; the native build is exercised by CI on macos-26.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
added 2 commits
November 4, 2026 09:11
…d reasoning_effort Through Mesh every thinking control (enable_thinking, reasoning_effort, ...) is canonicalized into chat_template_kwargs.enable_thinking and forwarded with the source field, which the strict request schema rejected (HTTP 400 for any request that turns thinking off, including tool calls with enable_thinking=false). Resolve the knobs with Mesh's precedence and pass remaining template kwargs to Eredu's extra_template_kwargs.
The plugin emits OpenAI's content: null for a text-free tool call; replaying
that message failed in Qwen3's template ('</think>' in message.content on null).
Normalize null/missing assistant content to an empty string before rendering.
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.
Tracks upstream Eredu
mainat465cf519(2026-10-29), 89 commits past the previous pind5683bb3(Oct 7).What the bump brings
3e74a8e2).1cb681fb).Port (API changes between the pins)
LoadedModel::load_execution_plannow returns aPlannedModel; the plugin keeps it target-only (into_target_only()) and prepares/settles throughmodel_mut().generate_prepared_chat(PreparedChatGenerationRequest)→generate(GenerationRequest { output_mode: Semantic, control_handle: None, .. }).SemanticEvent::ToolCallEnd→ToolCallCompleted { .. }(only a complete, validated call closes a tool call).NativeToolSupport::Unsupported { reason }→{ rejection }.eredu/examples/native_tool_calling.rsat465cf519.Thinking control through Mesh (second commit)
Mesh canonicalizes every thinking knob a client sends (
enable_thinking,reasoning_effort,reasoning, …) intochat_template_kwargs.enable_thinkingand forwards it together with the source field. The plugin's strict request schema rejectedchat_template_kwargs, so through Mesh (0.78.1 and main alike) any request that turned thinking off — including tool calls withenable_thinking: false— failed with HTTP 400 (present since v0.1.5; found while testing this PR through Mesh). The request schema now acceptschat_template_kwargsandreasoning_effort, resolvesenable_thinkingwith Mesh's precedence (reasoning_effort< explicit flag < caller kwargs), and passes the remaining kwargs to Eredu'sextra_template_kwargs. Unknown top-level fields still fail closed.Tool-result replay (third commit)
The plugin emits OpenAI's
content: nullfor a text-free tool-call turn. Replaying that turn (the normal tool-result follow-up) failed in Qwen3's template ('</think>' in message.contenton null →eredu_error); the old pin masked this by returning the call text ascontent. Assistant messages with null/missingcontentare now normalized to""before rendering.Checks
cargo fmt --check,cargo test --locked --all-targets(15 mock tests),cargo clippy --locked --all-targets -D warnings— pass.f48d5afaf) with Qwen3-1.7B-4bit: models list, chat, SSE, thinking off (enable_thinking,reasoning_effort: none), tool call (JSON + SSE), tool-result follow-up, SIGINT cleanup — results in the Buzzeredu-pluginthread.