1. 18 Mar, 2026 19 commits
  2. 17 Mar, 2026 21 commits
    • Your Name's avatar
      Fix: Filter out special model keys when resolving default · 350b2c7f
      Your Name authored
      When resolving 'default', skip keys like 'default', 'image', 'audio',
      'image:*', 'audio:*' to find the first actual LLM model.
      350b2c7f
    • Your Name's avatar
      Fix: Skip 'default' key when resolving model name · 169d3647
      Your Name authored
      When resolving 'default' model, skip the 'default' key in models dict
      and return the first actual loaded model instead.
      169d3647
    • Your Name's avatar
      Remove --force-all, use --force-reasoning all instead · cff368c7
      Your Name authored
      - Removed --force-all CLI flag
      - Updated help text to document 'all' option
      - Updated reasoning_choices to expand 'all' to all options
      - Updated parsing logic to handle 'all' as string
      cff368c7
    • Your Name's avatar
      Fix: Properly resolve 'default' model name to actual model · 2983ddf4
      Your Name authored
      When requested_model is 'default', get_resolved_model_name now:
      1. First tries current_manager.default_model
      2. Falls back to the first model in manager.models
      
      This ensures the model family is correctly detected for parser selection.
      2983ddf4
    • Your Name's avatar
      Add ToolCallParser fallback in ModelParserAdapter · d16f206e
      Your Name authored
      When the model-specific parser (like QwenParser) doesn't find any
      tool calls, fall back to ToolCallParser as a catch-all.
      d16f206e
    • Your Name's avatar
      Fix: Add <tool> to XML pattern in ApexBig50Parser · a7e992a0
      Your Name authored
      The regex pattern was missing <tool> - it only matched <tool_call>,
      funktion>, and <tool_use>. Now it also matches <tool>.
      a7e992a0
    • Your Name's avatar
      Add custom XML tool format parser for... · caddb164
      Your Name authored
      Add custom XML tool format parser for <tool><action>...</action><object>...</object><properties>...</properties></tool>
      
      The model was generating tool calls in this format:
      <tool>
      <action>search</action>
      <object>financial_data</object>
      <properties>
        <query>...</query>
      </properties>
      </tool>
      
      Added parser support in ApexBig50Parser and strip_tool_calls_from_content
      to handle this custom format.
      caddb164
    • Your Name's avatar
      Fix force-reasoning bugs: duplicate tools, reasoning duplication, tool extraction · bcd9bc55
      Your Name authored
      - Bug 1: Skip format_tools_for_prompt in raw mode (already had condition)
      - Bug 2: Use final_text (after reasoning) instead of generated_text for formatter
      - Bug 3: Pass final_text to ModelParserAdapter instead of generated_text
      
      This prevents reasoning from appearing in both content AND reasoning fields,
      and allows the tool parser to properly extract tool calls without being
      confused by reasoning tags.
      bcd9bc55
    • Your Name's avatar
      feat: Add --force-all flag equivalent to chat,inject,prompt,mock,raw,twopass · 017c0399
      Your Name authored
      - Add new --force-all CLI argument
      - Update --force-reasoning help text to mention --force-all
      - Handle --force-all in main function to expand to all reasoning options
      017c0399
    • Your Name's avatar
      feat: Complete --force-reasoning implementation with raw mode tool extraction · 207ac71f
      Your Name authored
      - Add force_reasoning_prompt function with Big 10 family prefixes
      - Add inject_system and force_reasoning parameters
      - Update --force-reasoning CLI with comma-separated options
      - Add --dump option to show raw output, parsed output, and litellm debug
      - Fix stop tokens to include ]]> when prompt is selected
      - Add mock strategy for fake reasoning stats
      - Chain --system-prompt at start of existing system message
      - Add 'raw' option to --force-reasoning
      - Fix format_tools_for_prompt to skip in raw mode
      - Pass tools to format_for_raw_completion in raw mode
      - Add parse_and_format method to OpenAIFormatter for tool extraction
      - Use parse_and_format in raw mode for correct tool extraction pipeline
      
      Pipeline: Model output -> Extract reasoning (raw mode) -> ModelParserAdapter (extract tools) -> OpenAIFormatter (final format)
      207ac71f
    • Your Name's avatar
      Fix force_reasoning_args None check in mock reasoning logic · 329a0042
      Your Name authored
      - Add truthy check before 'in' operator to prevent TypeError when
        force_reasoning_args is None (when --force-reasoning is not specified)
      - Fixes: name 'force_reasoning_args' is not defined error
      329a0042
    • Your Name's avatar
      Fix: Only apply mock reasoning when no real reasoning extracted · 1266f46a
      Your Name authored
      - In raw mode, extracted reasoning is now preserved in the response
      - Mock reasoning is only applied when there's no existing reasoning
      - Added logic to set extracted reasoning in message after formatter
      - Same fix applied to non-raw path in generate_chat_response
      1266f46a
    • Your Name's avatar
      Add critical instruction to system prompt and tool tag fallback extraction · 059db080
      Your Name authored
      - System prompt now includes: 'CRITICAL: You must always close your reasoning with ]]> before opening any tool tags'
      - Extraction logic now uses tool tags as fallback stop markers if close tag is missing
      - Handles: <tool_call>, <tool>, <|tool_call|>, <|tool|>, <function=
      059db080
    • Your Name's avatar
      Add --dump output for raw mode first pass and extraction · 301371bf
      Your Name authored
      Shows:
      - Full first pass result
      - Extraction details (close tag used, reasoning text, final text)
      - Cleanup details
      301371bf
    • Your Name's avatar
      Pass raw mode output through formatter/parser · b7bfccda
      Your Name authored
      Now raw mode passes the generated text through OpenAIFormatter which:
      - Handles tool extraction
      - Provides OpenAI compatibility
      - Handles other post-processing
      
      This ensures raw mode output is treated the same as regular mode.
      b7bfccda
    • Your Name's avatar
      Add cleanup_control_tokens and fix raw mode issues · d11b24fc
      Your Name authored
      - Add cleanup_control_tokens function to strip leading/trailing control tokens
      - Apply cleanup to final_text and second_pass_result in raw mode
      - Add mock strategy handling to raw mode (was missing)
      - Add debug output for cleanup steps
      d11b24fc
    • Your Name's avatar
      Fix UnboundLocalError: template_manager not defined · 0c1c2429
      Your Name authored
      When 'raw' is used without 'prompt', template_manager wasn't defined.
      Now creating it on-demand when needed.
      0c1c2429
    • Your Name's avatar
      Make 'raw' mutually exclusive with 'prompt' and 'inject' · ca6f9841
      Your Name authored
      When 'raw' is used, skip the 'prompt', 'inject', and 'stop' handlers
      since raw mode handles everything separately. This was causing
      double assistant headers and corrupted prompts.
      ca6f9841
    • Your Name's avatar
      Remove tokenizer approach, use only template_manager · 750d433f
      Your Name authored
      The tokenizer approach was causing double assistant headers.
      Now using only template_manager.format_for_raw_completion which
      handles everything correctly.
      750d433f
    • Your Name's avatar
      Use template_manager.format_for_raw_completion instead of tokenizer · 7d391da6
      Your Name authored
      The AgenticTemplateManager already has a format_for_raw_completion method
      that handles prompt formatting with reasoning tags. No need to manually
      find the tokenizer - just use the existing template logic.
      7d391da6
    • Your Name's avatar
      Add more debug output for tokenizer detection in raw mode · 51cee9e7
      Your Name authored
      Now shows:
      - current_manager type and backend type
      - Available attributes on the backend
      - Which path was used to find (or not find) the tokenizer
      - Also checks model_manager.tokenizer as fallback
      51cee9e7