1151 Commits

Author SHA1 Message Date
c71a535f16 added opencode zen as provider 2025-12-25 11:08:23 +01:00
github-actions[bot]
7afc7c1cc9 chore: sync version to config.py [skip ci] 2025-12-15 17:07:31 +00:00
semantic-release
fa78edca0b chore(release): 9.8.2
Automatically generated by python-semantic-release
2025-12-15 17:07:24 +00:00
Beehive Innovations
2eb29b5a0f Merge pull request #353 from DragonFSKY/fix/path-traversal-security
fix: path traversal vulnerability in is_dangerous_path()
2025-12-15 21:06:41 +04:00
Fahad
ba08308a23 fix(security): handle macOS symlinked system dirs
Follow-up on PR #353 to keep dangerous-path blocking correct on macOS (/etc -> /private/etc) while avoiding overblocking Windows workspaces (C:\).
2025-12-15 17:02:24 +00:00
谢栋梁
e5548acb98 fix: allow home subdirectories through is_dangerous_path()
Split DANGEROUS_PATHS into two categories:
1. DANGEROUS_SYSTEM_PATHS: Block path AND all subdirectories
   (e.g., /etc, /etc/passwd, /var/log/auth.log)
2. DANGEROUS_HOME_CONTAINERS: Block ONLY exact match
   (e.g., /home is blocked but /home/user/project passes through)

This fixes the issue where /home/user/project was incorrectly blocked
by is_dangerous_path(). Subdirectory access control for home directories
is properly delegated to is_home_directory_root() in resolve_and_validate_path().

Addresses review feedback from @chatgpt-codex-connector about blocking
all home directory subpaths.
2025-12-15 20:24:44 +08:00
github-actions[bot]
c492735872 chore: sync version to config.py [skip ci] 2025-12-15 11:53:57 +00:00
semantic-release
35ffac5565 chore(release): 9.8.1
Automatically generated by python-semantic-release
2025-12-15 11:53:52 +00:00
Beehive Innovations
104d0dd421 Merge pull request #349 from brt-h/fix/openrouter-store-parameter 2025-12-15 15:53:09 +04:00
github-actions[bot]
69a42a71d1 chore: sync version to config.py [skip ci] 2025-12-15 11:38:26 +00:00
semantic-release
cc03a8d658 chore(release): 9.8.0
Automatically generated by python-semantic-release
2025-12-15 11:38:20 +00:00
Beehive Innovations
483c67edb7 Merge pull request #350 from brt-h/feat/add-opus-4.5-openrouter
feat: Add Claude Opus 4.5 model via OpenRouter
2025-12-15 15:37:32 +04:00
github-actions[bot]
cb97a891de chore: sync version to config.py [skip ci] 2025-12-15 10:22:31 +00:00
semantic-release
00e60cab8f chore(release): 9.7.0
Automatically generated by python-semantic-release
2025-12-15 10:22:25 +00:00
Beehive Innovations
1be1d982b2 Merge pull request #352 from DragonFSKY/fix/clink-codex-search-arg
feat: re-enable web search for clink codex using correct --enable flag
2025-12-15 14:21:39 +04:00
github-actions[bot]
aa85644c9b chore: sync version to config.py [skip ci] 2025-12-15 10:18:59 +00:00
semantic-release
8662d2b953 chore(release): 9.6.0
Automatically generated by python-semantic-release
2025-12-15 10:18:53 +00:00
Beehive Innovations
283c9fa938 Merge pull request #354 from DragonFSKY/feat/native-claude-cli-detection
feat: support native installed Claude CLI detection
2025-12-15 14:18:04 +04:00
github-actions[bot]
94ff26c673 chore: sync version to config.py [skip ci] 2025-12-11 20:15:03 +00:00
semantic-release
92ecbc9e7a chore(release): 9.5.0
Automatically generated by python-semantic-release
2025-12-11 20:14:58 +00:00
Fahad
39c77215e5 fix: grok test 2025-12-11 20:14:10 +00:00
Fahad
8ca5bc4ee0 doc: gpt 5.2 update 2025-12-11 20:10:13 +00:00
Fahad
514c9c58fc feat: grok-4.1 support https://github.com/BeehiveInnovations/pal-mcp-server/issues/339 2025-12-11 20:08:17 +00:00
Fahad
8b16405f06 feat: GPT-5.2 support 2025-12-11 19:11:50 +00:00
谢栋梁
471af60e90 Merge remote-tracking branch 'upstream/main' into feat/native-claude-cli-detection 2025-12-07 00:08:17 +08:00
谢栋梁
df46708af9 Merge remote-tracking branch 'upstream/main' into fix/path-traversal-security 2025-12-07 00:07:59 +08:00
谢栋梁
bbdac1289a Merge remote-tracking branch 'upstream/main' into fix/clink-codex-search-arg 2025-12-07 00:07:45 +08:00
谢栋梁
91ffb51564 fix: use Path.is_relative_to() for cross-platform dangerous path detection
Replace string prefix matching with Path.is_relative_to() to correctly
handle Windows paths like "C:\" where trailing backslash caused double
separator issues (e.g., "C:\\" instead of "C:\").

Changes:
- Use Path.is_relative_to() for subdirectory detection (requires Python 3.9+)
- Add Windows path handling tests using PureWindowsPath
- Update test_utils.py to expect /etc/passwd to be blocked (security fix)
2025-12-05 13:53:39 +08:00
github-actions[bot]
5c3dd75ca6 chore: sync version to config.py [skip ci] 2025-12-05 04:56:17 +00:00
Fahad
74f26e82e7 docs: cleanup 2025-12-05 08:55:34 +04:00
Fahad
2b221746fe docs: cleanup 2025-12-04 18:19:53 +04:00
Fahad
591287cb2f docs: update subheading 2025-12-04 18:18:31 +04:00
github-actions[bot]
605633b2a2 chore: sync version to config.py [skip ci] 2025-12-04 14:16:06 +00:00
semantic-release
809b0974a7 chore(release): 9.4.2
Automatically generated by python-semantic-release
2025-12-04 14:16:01 +00:00
Fahad
b2dc84992d fix: rebranding, see [docs/name-change.md](docs/name-change.md) for details 2025-12-04 18:15:14 +04:00
谢栋梁
adc6231b98 feat: support native installed Claude CLI detection
Add automatic detection for Claude CLI installed via native methods:
- curl https://claude.ai/install.sh | bash -> ~/.local/bin/claude
- brew install --cask claude-code -> /opt/homebrew/bin/claude (Apple Silicon)
- brew install --cask claude-code -> /usr/local/bin/claude (Intel Mac/Linux)

When claude is not found in PATH, the script checks these paths in order
and adds the first found to PATH, with informative log messages.

Closes #303
2025-12-03 16:24:15 +08:00
谢栋梁
9ed15f405a fix: path traversal vulnerability - use prefix matching in is_dangerous_path()
The is_dangerous_path() function only did exact string matching,
allowing attackers to bypass protection by accessing subdirectories:
- /etc was blocked but /etc/passwd was allowed
- C:\Windows was blocked but C:\Windows\System32\... was allowed

This minimal fix changes is_dangerous_path() to use PREFIX MATCHING:
- Now blocks dangerous directories AND all their subdirectories
- Paths like /etcbackup are still allowed (not under /etc)
- No changes to DANGEROUS_PATHS list

Security:
- Fixes CWE-22: Path Traversal vulnerability
- Reported by: Team off-course (K-Shield.Jr 15th)

Fixes #312
Fixes #293
2025-12-03 15:29:57 +08:00
谢栋梁
e7b9f3a5d7 feat: re-enable web search for clink codex using correct --enable flag
The previous fix (aceddb6) removed --search entirely, disabling web search.
This restores web search functionality using the correct --enable flag
that works with the codex exec subcommand.

Related to #338
2025-12-03 14:32:37 +08:00
Robert Hyman
cf63fd2544 test: Add comprehensive test coverage for Opus 4.5 aliases
Address review feedback:
- Add test for claude-opus alias in test_alias_resolution
- Add tests for anthropic/claude-opus-4.5 full name and opus4.5 alias
  in test_registry_capabilities
2025-11-29 18:23:44 -05:00
Robert Hyman
813ce5c9f7 feat: Add Claude Opus 4.5 model via OpenRouter
- Add anthropic/claude-opus-4.5 with aliases: opus, opus4.5, claude-opus
- Set intelligence_score to 18 (matching Gemini 3 Pro)
- Update Opus 4.1 to use opus4.1 alias only
- Update tests to reflect new alias mappings

Note: supports_function_calling and supports_json_mode set to false
following existing project pattern for Claude models, despite
OpenRouter API support for these features.
2025-11-29 18:00:31 -05:00
Robert Hyman
b6a8d682d9 refactor(tests): remove unused setUp method
The setUp method created provider instances that were never used.
Each test creates its own instance inside the patch context manager,
which is the correct pattern for property mocking.
2025-11-29 01:42:27 -05:00
Robert Hyman
0c3e63c0c7 refactor(tests): address code review feedback
- Remove redundant @patch.object decorators (inner context manager suffices)
- Remove try/except blocks that could hide test failures
- Tests now fail fast if mocking is insufficient
2025-11-29 00:55:41 -05:00
Robert Hyman
1f8b58d607 fix(providers): omit store parameter for OpenRouter responses endpoint
OpenRouter's /responses endpoint rejects store:true via Zod validation.
This is an endpoint-level limitation, not model-specific. The fix
conditionally omits the store parameter for OpenRouter while maintaining
it for direct OpenAI and Azure OpenAI providers.

- Add provider type check in _generate_with_responses_endpoint
- Include debug logging when store parameter is omitted
- Add regression tests for both OpenRouter and OpenAI behavior

Fixes #348
2025-11-29 00:19:13 -05:00
github-actions[bot]
bcfaccecd4 chore: sync version to config.py [skip ci] 2025-11-21 05:32:25 +00:00
semantic-release
dc55237789 chore(release): 9.4.1
Automatically generated by python-semantic-release
2025-11-21 05:32:20 +00:00
Fahad
aceddb655f fix: regression https://github.com/BeehiveInnovations/zen-mcp-server/issues/338
refactor: added regression test
2025-11-21 09:31:34 +04:00
github-actions[bot]
c4461a466f chore: sync version to config.py [skip ci] 2025-11-18 16:51:37 +00:00
semantic-release
165900db53 chore(release): 9.4.0
Automatically generated by python-semantic-release
2025-11-18 16:51:32 +00:00
Fahad
19a2a89b12 fix: failing test for gemini 3.0 pro open router 2025-11-18 20:50:42 +04:00
Fahad
bbfdfac511 feat: Gemini 3.0 Pro Preview for Open Router 2025-11-18 20:44:22 +04:00