From cd6da3c10ab55671f56638fcd5ac44542da81e20 Mon Sep 17 00:00:00 2001 From: Roberdan Date: Sat, 27 Dec 2025 20:45:03 +0100 Subject: [PATCH] chore: Bump version to 6.3.0 for release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Includes: - Provider override support (--provider flag) - Ollama model selection (--ollama-model flag) - Extended workflow monitor for complex workflows - Critical fix for delegation infinite loop - OpenAI Realtime WebSocket improvements - Compiler warning suppression for safe patterns 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- CHANGELOG.md | 44 ++++++++++++++++++++++++++++++++++++++ Makefile | 2 ++ VERSION | 2 +- src/router/intent_router.c | 18 ---------------- 4 files changed, 47 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4836aa..c87cb58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,50 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [6.3.0] - 2025-12-27 + +### Added + +- **Provider Override Support** - New `--provider` CLI flag to force specific AI provider + - Override default model routing for any command + - Supports: anthropic, openai, gemini, openrouter, ollama, mlx + - Example: `convergio --provider openai "analyze this code"` + +- **Ollama Model Selection** - New `--ollama-model` CLI flag for local model control + - Specify which Ollama model to use when running locally + - Example: `convergio --provider ollama --ollama-model llama3.2 "explain this"` + +- **Extended Workflow Monitor** - Support for complex multi-stage workflows + - Sequential workflows: step-by-step execution with dependencies + - Pipeline workflows: streaming data through processing stages + - Conditional workflows: branching based on runtime conditions + - Phased workflows: grouped stages with phase-level monitoring + +### Fixed + +- **Critical: Delegation Infinite Loop** - Fixed race condition in agent delegation + - Prevented infinite loops when delegating tasks between agents + - Fixed Ollama memory explosion caused by runaway delegation chains + - Added maximum delegation depth protection (default: 5 levels) + +- **OpenAI Realtime WebSocket** - Improved voice session handling + - Better connection state management + - Proper cleanup on session termination + - Fixed memory leaks in WebSocket callbacks + +### Changed + +- **Compiler Warning Suppression** - Added flags for safe warning types + - `-Wno-format-nonliteral` for intentional dynamic format strings + - `-Wno-gnu-zero-variadic-macro-arguments` for standard variadic macro patterns + - Removed unused `is_delegation_request` function to clean codebase + +### Documentation + +- Updated workflow orchestration documentation with new workflow types +- Added examples for provider override usage +- Documented Ollama integration patterns + ## [6.2.0] - 2025-12-26 ### Added diff --git a/Makefile b/Makefile index decaaea..79c20a6 100644 --- a/Makefile +++ b/Makefile @@ -91,6 +91,8 @@ CFLAGS = $(ARCH_FLAGS) \ -Wall -Wextra -Wpedantic \ -Wno-unused-parameter \ -Wno-overlength-strings \ + -Wno-format-nonliteral \ + -Wno-gnu-zero-variadic-macro-arguments \ -ffast-math \ -fvectorize \ -mllvm -enable-machine-outliner=never \ diff --git a/VERSION b/VERSION index 6abaeb2..798e389 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -6.2.0 +6.3.0 diff --git a/src/router/intent_router.c b/src/router/intent_router.c index a6ea701..0480bab 100644 --- a/src/router/intent_router.c +++ b/src/router/intent_router.c @@ -168,24 +168,6 @@ static const char* check_switch_intent(const char* input) { return NULL; // Switch intent but couldn't identify agent } -// Check if input is a delegation request (separate from routing) -// Returns true if this is a delegation request that needs marker enforcement -static bool is_delegation_request(const char* input) { - char lower[256]; - size_t len = strlen(input); - if (len >= sizeof(lower)) - len = sizeof(lower) - 1; - for (size_t i = 0; i < len; i++) { - lower[i] = (char)tolower((unsigned char)input[i]); - } - lower[len] = '\0'; - - return (strstr(lower, "delega") || strstr(lower, "delegate") || - strstr(lower, "coordina") || strstr(lower, "orchestra") || - strstr(lower, "chiedi a") || strstr(lower, "ask ") || - strstr(lower, "fai analizzare") || strstr(lower, "fai fare")); -} - // Quick pattern check before calling LLM (optimization) static const char* quick_pattern_route(const char* input, bool* is_delegation) { // Convert to lowercase for matching