froggeric commited on
Commit
cc66289
·
1 Parent(s): d2c8dff

docs: update changelog and details with minja replace filter hotfix

Browse files
Files changed (1) hide show
  1. README.md +5 -4
README.md CHANGED
@@ -19,7 +19,7 @@ tags:
19
  <details open>
20
  <summary><b>Update History & Changelog (v20)</b></summary>
21
 
22
- > **2026-06-05 Update (v20): The Architect Patch.** A monumental structural overhaul targeting deep agentic loops and C++ inference engine compatibility. (1) **Minja AST Flattening:** Dramatically optimized Jinja nesting depths to resolve severe parsing bottlenecks that were dropping inference throughput by 80% on `llama.cpp`. (2) **Auto-disable Thinking:** Introduced `auto_disable_thinking_with_tools` kwarg (default `false`) that allows users to instantly shut off reasoning blocks during tool use to completely prevent `<tool_call>` hallucinations inside `<think>` tags. (3) **Deep Agent Fallbacks:** Resolved exceptions triggered by mid-conversation system prompts or loops lacking human `user` messages. (4) **Payload Truncation:** Implemented `max_tool_arg_chars` and `max_tool_response_chars` configurations to definitively stop context-window explosions from massive data returns. *(Huge thanks to `barubary` / `spiritbuun` for their contributions to these C++ architecture optimizations!)*
23
 
24
  </details>
25
 
@@ -181,10 +181,11 @@ When a tool call fails validation repeatedly, the model can enter a degenerate r
181
  ### 5. Smart False-Positive Detection (v18)
182
  Instead of broad substring matching that triggers false retry-loops on successful database returns containing words like "error", v18 utilizes strict structural guards looking for `Exception:`, `"error":`, `Traceback`, and `command not found`, combined with length gates and shell-echo exclusions (`$ `).
183
 
184
- ### 6. minijinja Compatibility Constraints (v18)
185
- Python-only Jinja2 features crash on `minijinja` (the C++ runtime used by llama.cpp, LM Studio, and MLX). All instances have been refactored for universal support:
 
186
  - `\| items` -> `for key in mapping`
187
- - `loop.previtem` -> `messages[loop.index0 - 1]` (v18)
188
  - `map('string')` -> `join('|')`
189
  - `\| first` -> `'$ ' in content`
190
 
 
19
  <details open>
20
  <summary><b>Update History & Changelog (v20)</b></summary>
21
 
22
+ > **2026-06-05 Update (v20): The Architect Patch.** A monumental structural overhaul targeting deep agentic loops and C++ inference engine compatibility. (1) **Minja AST Flattening:** Dramatically optimized Jinja nesting depths to resolve severe parsing bottlenecks that were dropping inference throughput by 80% on `llama.cpp`. (2) **Minja Replace Bug Fix (Hotfix):** Bypassed a severe C++ parsing bug in `llama.cpp` where using the `replace` filter at index 0 of a user prompt silently dropped the entire text payload. Inline thinking toggles now use `split` and `join` for robust stripping. (3) **Auto-disable Thinking:** Introduced `auto_disable_thinking_with_tools` kwarg (default `false`) that allows users to instantly shut off reasoning blocks during tool use. (4) **Deep Agent Fallbacks:** Resolved exceptions triggered by mid-conversation system prompts or loops lacking human `user` messages. (5) **Payload Truncation:** Implemented `max_tool_arg_chars` and `max_tool_response_chars` configurations to definitively stop context-window explosions from massive data returns. *(Huge thanks to `barubary` / `spiritbuun` for their contributions to these C++ architecture optimizations!)*
23
 
24
  </details>
25
 
 
181
  ### 5. Smart False-Positive Detection (v18)
182
  Instead of broad substring matching that triggers false retry-loops on successful database returns containing words like "error", v18 utilizes strict structural guards looking for `Exception:`, `"error":`, `Traceback`, and `command not found`, combined with length gates and shell-echo exclusions (`$ `).
183
 
184
+ ### 6. minijinja Compatibility Constraints (v18/v20)
185
+ Python-only Jinja2 features crash or misbehave on `minijinja`/`minja` (the C++ runtime used by llama.cpp, LM Studio, and MLX). All instances have been refactored for universal support:
186
+ - `content | replace('<|think_on|>', '')` -> `content.split('<|think_on|>') | join('')` (Fixes a severe bug where `minja` silently drops the entire text payload if the replaced string is found at index 0).
187
  - `\| items` -> `for key in mapping`
188
+ - `loop.previtem` -> `messages[loop.index0 - 1]`
189
  - `map('string')` -> `join('|')`
190
  - `\| first` -> `'$ ' in content`
191