Skip to content

v0.62.3

Latest

Choose a tag to compare

@SomeOddCodeGuy SomeOddCodeGuy released this 14 May 02:27
· 1 commit to master since this release
6e171b7

Major New Features

  1. End-to-End Tool Call Passthrough — Full tool calling support across all LLM handlers (Claude, OpenAI, Ollama) with both streaming and non-streaming paths. Frontend API handlers extract tools and tool_choice from incoming requests, thread them through the workflow pipeline, and forward them to backend LLM handlers. Backend handlers parse tool call data from LLM responses and return it through the response pipeline to the frontend client. A new allowTools boolean on workflow node configs (default false) gates which nodes forward tools, so memory nodes, summarizers, and categorizers silently suppress tool calls during internal processing. OpenAI format is used as the internal standard; Claude and Ollama handlers convert to/from their native formats. Streaming tool call chunks bypass all text processing (prefix stripping, think-block removal, group-chat reconstruction) and are emitted directly as SSE.

  2. DelimitedChunker Workflow Node — New node type that splits content on a delimiter and returns the first N (head) or last N (tail) chunks, rejoined with the same delimiter. Useful for trimming logs, CSV rows, or section-separated documents. Configurable via content, delimiter, mode ("head"/"tail"), and count properties. Supports variable substitution in both content and delimiter fields.

  3. Conversation Variable Formatting Controls — Two new formatting options for chat_user_prompt_* workflow variables. Node-level addUserAssistantTags (boolean) prepends User: / Assistant: / System: role prefixes to each message in conversation variable strings. User-level separateConversationInVariables (boolean) with conversationSeparationDelimiter (string) replaces the default newline between messages with a custom delimiter.

  4. Node-Level Image Controls — Standard nodes can now control image passthrough via acceptImages (boolean, preserves images on conversation messages sent to the LLM) and maxImagesToSend (integer, limits total images sent keeping the most recent; 0 = no limit). Images are trimmed oldest-first.

  5. /v1/chat/completions Versioned Route — Added /v1/chat/completions as the primary versioned route for the OpenAI-compatible API. The existing /chat/completions is kept as an alias for backward compatibility.

Bug Fixes

  1. Curly Brace Escaping in Agent Outputs/Inputs — Fixed str.format() crashes when agent outputs, agent inputs, or enriched tool call text contain literal curly braces (e.g., JSON from tool calls or files loaded by GetCustomFile). Uses a two-pass sentinel-escaping system: literal braces in variable values are replaced with sentinel tokens before formatting, then restored afterward.

  2. Category Matching With Underscores — Fixed _match_category failing to match category keys containing underscores (e.g., NEW_INSTRUCTION). The existing code stripped punctuation (including underscores) from the LLM output but compared against raw keys. Both sides are now normalized before comparison.

Code Quality

  1. Numeric Config Field Resolution — Replaced ad-hoc maxResponseSizeInTokens variable resolution with a table-driven _resolve_numeric_config_fields() method that handles all ~30 integer config fields and 1 float field in a single pass at the start of node processing.

Bug Fix Pt 2

  1. Concurrency Limiting — Fixed issue where the concurrency issue was stopping GET endpoints from responding, so models wouldn't load in frontends while another call was going through. Now only POST endpoints, which hit the LLM APIs should be limited.

  2. Dependabot Bumps — Dependabot bumped a couple of dependency versions for CVEs.