Commit Graph

848 Commits

Author SHA1 Message Date
Fahad
614bfaa74a Bump 2025-06-19 13:07:06 +04:00
Fahad
883aa220a7 Improved prompts to encourage better investigative flow
Improved abstraction
Fixed failing tests after refactor
2025-06-19 13:02:07 +04:00
Fahad
b8c8e6f91e Improved prompts to encourage better investigative flow
Improved abstraction
Fixed failing tests after refactor
2025-06-19 11:18:03 +04:00
Fahad
43485dadd6 Improved prompts to encourage better investigative flow
Improved abstraction
2025-06-19 10:56:39 +04:00
Fahad
fccfb0d999 Re-imagined and re-written Debug tool. Instead of prompting Claude to perform initial analysis (and hoping it did), the tool now works through the debug process as an 'investigation', encouraging Claud to gather its 'findings' / 'hypothesis', stepping back as needed, collecting files it's gone through and keeping track of files relevant to the issue at hand. This structured investiion is then passed to the other model with far greater insight than the original debug tool ever could.
Improved prompts, guard against overengineering and flag that as an antipattern
2025-06-19 10:22:30 +04:00
Beehive Innovations
2641c78f8d Create FUNDING.yml 2025-06-19 09:07:48 +04:00
Fahad
9f3b70d6d7 Added proper temperature constraints to the model, fixes: https://github.com/BeehiveInnovations/zen-mcp-server/issues/78
Prompt tweaks
2025-06-19 08:30:46 +04:00
Fahad
ec3a466b1c Fixed planner tool warnings when model was auto (model not required) 2025-06-19 06:14:04 +04:00
Fahad
be1885c782 Cleanup echo 2025-06-19 05:42:12 +04:00
Fahad
d0da6ce9e4 Gemini model rename 2025-06-19 05:37:40 +04:00
Beehive Innovations
b6ad76b39a Update README.md 2025-06-19 00:03:46 +04:00
Beehive Innovations
4151c3c3a5 Migration from Docker to Standalone Python Server (#73)
* Migration from docker to standalone server
Migration handling
Fixed tests
Use simpler in-memory storage
Support for concurrent logging to disk
Simplified direct connections to localhost

* Migration from docker / redis to standalone script
Updated tests
Updated run script
Fixed requirements
Use dotenv
Ask if user would like to install MCP in Claude Desktop once
Updated docs

* More cleanup and references to docker removed

* Cleanup

* Comments

* Fixed tests

* Fix GitHub Actions workflow for standalone Python architecture

- Install requirements-dev.txt for pytest and testing dependencies
- Remove Docker setup from simulation tests (now standalone)
- Simplify linting job to use requirements-dev.txt
- Update simulation tests to run directly without Docker

Fixes unit test failures in CI due to missing pytest dependency.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Remove simulation tests from GitHub Actions

- Removed simulation-tests job that makes real API calls
- Keep only unit tests (mocked, no API costs) and linting
- Simulation tests should be run manually with real API keys
- Reduces CI costs and complexity

GitHub Actions now only runs:
- Unit tests (569 tests, all mocked)
- Code quality checks (ruff, black)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fixed tests

* Fixed tests

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-06-18 23:41:22 +04:00
Fahad
9d72545ecd Updated PR instructions 2025-06-18 08:46:17 +04:00
Fahad
d4c258820d Typo :) 2025-06-18 08:44:05 +04:00
Fahad
dacafa6044 Lookout for non-retriable errors and exit early 2025-06-18 08:17:16 +04:00
Fahad
dad1e2d74e Proper fix for model discovery per provider 2025-06-18 07:16:10 +04:00
Fahad
5199dd6ead Include custom models in model discovery for auto mode too 2025-06-18 06:40:35 +04:00
Fahad
b56993a42f Refactor 2025-06-18 06:24:24 +04:00
Fahad
c3276595f9 Updated instructions 2025-06-18 05:58:50 +04:00
Fahad
e74e612de9 Keep last 2025-06-18 05:43:29 +04:00
Fahad
5c75ac978d AI banter 2025-06-18 05:42:55 +04:00
Fahad
ee52d7da4e Fixed links for Planner tool 2025-06-17 20:52:35 +04:00
Fahad
a509730dca New Planner tool to help you break down complex ideas, problems, and projects into multiple manageable steps. This is a self-prompt generation tool whose output can then be fed into another tool and model as required 2025-06-17 20:49:53 +04:00
Fahad
3667ed3a43 Steer the LLMs away from being overtly assertive in trying to discover non-existent bugs during a debug investigation session
Add a no_bug_found response
2025-06-17 17:01:46 +04:00
Fahad
044a8621a3 Vastly improved debug tool and related instructions
Accompanying simulation test
Cleanup - A single source of truth for parameter descriptions
2025-06-17 16:23:26 +04:00
Fahad
9bf2a2a51c Improved prompt in case Claude tries to use a smaller model with a larger file 2025-06-17 13:08:50 +04:00
Fahad
08c22273db Improved docs 2025-06-17 12:20:57 +04:00
Fahad
863abf1a9f Improved docs 2025-06-17 12:20:52 +04:00
Fahad
aec218a5ef Improved docs 2025-06-17 11:47:47 +04:00
Fahad
77da7b17e6 Fixes bug pointed out by @dsaluja (https://github.com/dsaluja)
Fixes other providers not fixed by https://github.com/BeehiveInnovations/zen-mcp-server/pull/66
New regression tests
2025-06-17 11:29:45 +04:00
Fahad
be7d80d7aa Advertise prompts, fixes https://github.com/BeehiveInnovations/zen-mcp-server/issues/63 2025-06-17 11:17:19 +04:00
Beehive Innovations
95556ba9ea Add Consensus Tool for Multi-Model Perspective Gathering (#67)
* WIP
Refactor resolving mode_names, should be done once at MCP call boundary
Pass around model context instead
Consensus tool allows one to get a consensus from multiple models, optionally assigning one a 'for' or 'against' stance to find nuanced responses.

* Deduplication of model resolution, model_context should be available before reaching deeper parts of the code
Improved abstraction when building conversations
Throw programmer errors early

* Guardrails
Support for `model:option` format at MCP boundary so future tools can use additional options if needed instead of handling this only for consensus
Model name now supports an optional ":option" for future use

* Simplified async flow

* Improved model for request to support natural language
Simplified async flow

* Improved model for request to support natural language
Simplified async flow

* Fix consensus tool async/sync patterns to match codebase standards

CRITICAL FIXES:
- Converted _get_consensus_responses from async to sync (matches other tools)
- Converted store_conversation_turn from async to sync (add_turn is synchronous)
- Removed unnecessary asyncio imports and sleep calls
- Fixed ClosedResourceError in MCP protocol during long consensus operations

PATTERN ALIGNMENT:
- Consensus tool now follows same sync patterns as all other tools
- Only execute() and prepare_prompt() are async (base class requirement)
- All internal operations are synchronous like analyze, chat, debug, etc.

TESTING:
- MCP simulation test now passes: consensus_stance 
- Two-model consensus works correctly in ~35 seconds
- Unknown stance handling defaults to neutral with warnings
- All 9 unit tests pass (100% success rate)

The consensus tool async patterns were anomalous in the codebase.
This fix aligns it with the established synchronous patterns used
by all other tools while maintaining full functionality.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fixed call order and added new test

* Cleanup dead comments
Docs for the new tool
Improved tests

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-06-17 10:53:17 +04:00
Fahad
9b98df650b Fixes O3-Pro connection https://github.com/BeehiveInnovations/zen-mcp-server/issues/56
New tests for O3-pro
Improved prompts for shorthand input
2025-06-16 20:00:08 +04:00
Fahad
5f69ad4049 Updated instructions. 2025-06-16 19:22:29 +04:00
Fahad
b528598360 Add regression tests for Gemini parameter order bug
Adds two comprehensive tests to prevent future regression of the parameter
order bug in `restriction_service.is_allowed()` calls:

1. `test_gemini_parameter_order_regression_protection` - Tests edge case
   where only alias is allowed, ensuring correct parameter order
2. `test_gemini_parameter_order_edge_case_full_name_only` - Tests reverse
   scenario where only full model name is allowed

These tests specifically catch the subtle bug where parameters were
incorrectly passed as (provider, user_input, resolved_name) instead of
(provider, resolved_name, user_input). The bug was masked by OR logic
in most cases but could cause issues in edge scenarios.

All 498 tests pass, including the new regression protection tests.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 19:13:47 +04:00
Ming
f55f2b0a0f Fix Google model restriction parameter order regression (#62)
- Fixed swapped parameters in restriction_service.is_allowed() calls
- Parameter order should be (provider_type, model_name, original_name)
- Regression introduced in merge commit 39c50a1, breaking Gemini model access
- Added comments to prevent future parameter order confusion
- Resolves Gemini model is not allowed by restriction policy errors

🤖 Generated with Claude Code

Co-authored-by: Ming <ming@mail.ooo>
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-16 19:12:16 +04:00
Fahad
70b64adff3 Schema now lists all models including locally available models
New tool to list all models `listmodels`
Integration test to for all the different combinations of API keys
Tweaks to codereview prompt for a better quality input from Claude
Fixed missing 'low' severity in codereview
2025-06-16 19:07:35 +04:00
Fahad
cb17582d8f Optimize OpenRouter registry loading with class-level caching
Instead of creating new OpenRouterModelRegistry instances multiple times
per tool (4x per tool during schema generation), we now use a shared
class-level cache in BaseTool. This reduces registry loading from 40+ times
to just once during MCP server initialization.

The optimization:
- Adds _openrouter_registry_cache as a class variable in BaseTool
- Implements _get_openrouter_registry() classmethod for lazy loading
- Ensures cache is shared across all tool subclasses
- Maintains identical functionality with improved performance

This significantly reduces startup time and resource usage when OpenRouter
is configured, especially noticeable with many custom models.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 18:54:15 +04:00
Fahad
93399b6d10 Merge remote-tracking branch 'origin/main' 2025-06-16 18:20:17 +04:00
Beehive Innovations
c3d44525b6 Merge pull request #60 from ming86/fix/google-allowed-models-restriction
WIP: Fix GOOGLE_ALLOWED_MODELS shorthand restriction validation
2025-06-16 18:20:08 +04:00
Fahad
357452b7ba Prompt support 2025-06-16 18:10:21 +04:00
Fahad
ebfda1862e Retry a few times with progressive delays before giving up 2025-06-16 17:47:42 +04:00
Ming
39c50a1e93 Merge branch 'BeehiveInnovations:main' into fix/google-allowed-models-restriction 2025-06-16 21:17:19 +08:00
Ming
4a95197846 Fix remaining validate_model_name parameter order inconsistency
Address code review feedback from Gemini Code Assist bot:
- Fix parameter order in validate_model_name method (line 256)
- Ensure consistent use of original model name for restriction validation
- All is_allowed() calls now properly use (provider, original_name, resolved_name)

This completes the fix for GOOGLE_ALLOWED_MODELS shorthand restriction validation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 21:16:01 +08:00
Ming
3ba22d8336 Fix GOOGLE_ALLOWED_MODELS shorthand restriction validation
- Fixed parameter order in is_allowed() calls to check original model name first
- Fixed validate_parameters() to use original model name instead of resolved name
- Fixed thinking capabilities check to use original model name
- Enables GOOGLE_ALLOWED_MODELS=pro,flash to work correctly with shorthand names

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 21:02:24 +08:00
Beehive Innovations
6b09f1468f Merge pull request #55 from BeehiveInnovations/feature/images
feat: Add comprehensive vision support, GPT-4.1 integration, and enhanced chat prompts
2025-06-16 16:58:28 +04:00
Fahad
65c3840f7e Fix image support integration tests to use real provider resolution pattern
Following the established testing patterns from other tool tests:
- Removed mocking of providers and capabilities
- Use real provider resolution with dummy API keys
- Expect proper validation behavior or provider-not-found errors
- Applied proper Redis mocking for conversation memory tests
- Simplified validation tests to focus on core functionality
- All 473 tests now pass 100% including 13 image support tests

This ensures CI/CD compatibility and follows the proven testing approach
used throughout the codebase for tool integration testing.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 16:37:34 +04:00
Fahad
ed386375be Complete Redis mocking fixes for image support integration tests
- Properly mock Redis client operations to support add_turn functionality
- Set up initial thread contexts so add_turn can find existing threads
- Mock Redis set operations to return success
- Ensure all Redis-dependent tests use proper mock patterns
- All 473 unit tests now pass 100% with proper isolation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 16:26:23 +04:00
Fahad
a65c63c8da Fix Redis mocking in image support integration tests
- Add proper Redis client mocking to prevent connection attempts during CI
- Apply @patch("utils.conversation_memory.get_redis_client") decorators to all methods using Redis
- Mock thread contexts for get_thread calls to ensure tests work without Redis
- Fixes GitHub Actions failures: ConnectionRefusedError when connecting to localhost:6379
- Maintains test isolation and proper mock patterns used throughout test suite

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 16:20:14 +04:00
Beehive Innovations
3049c85e3c Update base.py
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-06-16 14:51:34 +04:00