Commit Graph

2002 Commits

Author SHA1 Message Date
vanminhph
9cd36af3e8 fix(codex): preserve namespace MCP tools forwarded to Codex Responses API (#1483)
Integrated into release/v3.7.0
2026-04-21 17:18:26 -03:00
clousky2020
3502c5afd1 fix(fallback): use shared CircuitBreaker instead of undefined constants (#1485)
Integrated into release/v3.7.0
2026-04-21 17:18:23 -03:00
Diego Rodrigues de Sa e Souza
76b0f077a4 Merge pull request #1473 from clousky2020/provider
feat(fallback): add provider-level circuit breaker with configurable thresholds
2026-04-21 10:08:44 -03:00
diegosouzapw
1dae161823 Merge remote-tracking branch 'origin/release/v3.7.0' into release/v3.7.0 2026-04-21 08:41:08 -03:00
diegosouzapw
25e22df2cf chore(release): v3.7.0 — finalization 2026-04-21 08:36:39 -03:00
diegosouzapw
96d0f57558 feat: auto-inject stream_options.include_usage for OpenAI format streams (fixes #1423) 2026-04-21 08:34:41 -03:00
clousky
f651a27418 🐛 fix(providers): add optional chaining to connection object
- 在访问 providerSpecificData 前对 connection 添加可选链操作符
- 防止 connection 为 null/undefined 时导致的运行时错误
2026-04-21 19:31:46 +08:00
diegosouzapw
3834768b72 feat(providers): add lm studio and grok 4.3 support
Register LM Studio as an OpenAI-compatible local provider and map the
new grok-4.3 thinking model for web executor requests.

This update also hardens related platform behavior by switching backup
archive creation to execFileSync, validating ACP agent ids, expanding
shared CORS handling, and making prompt injection guard failures return
an explicit 500 response.

To preserve existing stored credentials, encryption now derives new
keys from a secret-based salt while still falling back to the legacy
static-salt key during decryption.
2026-04-21 08:27:48 -03:00
clousky
0d86244c90 fix: address PR review comments
1. Remove 429 from PROVIDER_FAILURE_ERROR_CODES
   - 429 (rate limit) is already handled by model-level and account-level locks
   - Including it in provider-wide circuit breaker causes premature cooldown

2. Fix reference counting in ModelStatusContext
   - Changed registeredModels from Set to Map<string, number>
   - Prevents polling stop when one component unmounts while others still track the model

3. Fix model ID parsing for providers with slashes in model names
   - Use indexOf/substring instead of split to handle models like "modelscope/moonshotai/Kimi-K2.5"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 16:27:53 +08:00
clousky
a389f2699a fix(fallback): merge new provider failure threshold fields in profile
The mergeProviderProfile function was missing the three new fields
added to PROVIDER_PROFILES (providerFailureThreshold, providerFailureWindowMs,
providerCooldownMs). This caused tests to fail because the profile
returned by getRuntimeProviderProfile did not include these fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 16:26:35 +08:00
clousky
3478dea5de ♻️ refactor(fallback): make provider failure thresholds configurable
- add provider-level circuit breaker config to PROVIDER_PROFILES
- remove hardcoded threshold constants in favor of profile-based config
- use getProviderProfile() to read thresholds with fallback defaults
- support different failure tolerance per provider type
2026-04-21 16:21:00 +08:00
clousky
0c24ab45af test(settings-api): add test harness for proper isolation
- create createSettingsApiHarness function with temp directory setup
- add beforeEach/afterEach hooks for storage reset between tests
- add after hook for cleanup
- use dynamic imports after env setup to ensure proper initialization
2026-04-21 16:16:53 +08:00
diegosouzapw
cde6f56014 Merge release/v3.7.0 into translation branch and resolve conflicts 2026-04-21 04:59:11 -03:00
dependabot[bot]
9754b04bd6 deps: bump the development group with 4 updates (#1464)
Integrated into release/v3.7.0
2026-04-21 04:50:07 -03:00
dependabot[bot]
d19b8d83e8 deps: bump the production group with 4 updates (#1463)
Integrated into release/v3.7.0
2026-04-21 04:50:04 -03:00
Marcus Bearden
496114ae8b fix(sse): enable tool calling for GPT OSS and DeepSeek Reasoner models (#1455)
Integrated into release/v3.7.0
2026-04-21 04:50:00 -03:00
Paijo
ceca26ae87 fix(encryption): return null on decryption failure to prevent sending encrypted tokens to providers (#1462)
Integrated into release/v3.7.0
2026-04-21 04:49:57 -03:00
Paijo
20f04574e5 fix: resolve skills, memory, and encryption system issues (#1456)
Integrated into release/v3.7.0
2026-04-21 04:48:32 -03:00
diegosouzapw
1d3d99bb9e fix(combo): resolve cross-provider thinking 400 and http clipboard (#1444)
Integrated into release/v3.7.0
2026-04-21 04:36:16 -03:00
Randi
b38e57d452 refactor: unify resilience controls (#1449)
Integrated into release/v3.7.0
2026-04-21 04:13:28 -03:00
Andrii Vitiuc
eaa74afb42 Merge remote-tracking branch 'origin/docs/uk-ua-translation-improvements' into docs/uk-ua-translation-improvements 2026-04-20 18:50:07 +02:00
3_1_3_u
3245779c11 Apply suggestion from @gemini-code-assist[bot]
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-04-20 18:48:54 +02:00
Andrii Vitiuc
a2a7eb5630 docs(i18n): fix Ukrainian translation issues from PR review
Address all 6 review comments from PR #1457:

- Fix typo: "drastично" → "драстично" (mixed Latin/Cyrillic)
- Translate model table entries: "Unlimited" → "Необмежено"
- Translate model table entries: "No reported cap" → "Немає повідомлень про ліміт"
- Translate OpenRouter description to Ukrainian
- Fix section header: "Documentation" → "Документація"
- Fix section header: "License" → "Ліцензія"

All terminology now uses proper Ukrainian orthography.
2026-04-20 18:37:36 +02:00
Andrii Vitiuc
bd5dd7cb21 docs(i18n): improve Ukrainian (uk-UA) translation quality
Complete translation and terminology improvements for Ukrainian documentation:
- docs/i18n/uk-UA/README.md:  full Ukrainian translation
- docs/i18n/uk-UA/SECURITY.md: full Ukrainian translation
- docs/i18n/uk-UA/docs/A2A-SERVER.md: full Ukrainian translation
- docs/i18n/uk-UA/docs/API_REFERENCE.md: full Ukrainian translation
- docs/i18n/uk-UA/docs/AUTO-COMBO.md: full Ukrainian translation
- docs/i18n/uk-UA/docs/USER_GUIDE.md: complete translation (966 lines)

Changes:
- Translated all English content to Ukrainian
- Preserved all code examples, commands, and technical terms
- Maintained proper Ukrainian orthography with diacritical marks
2026-04-20 18:15:41 +02:00
diegosouzapw
9311f2a627 docs(changelog): add missing security fixes 163 and 164 to 3.7.0 notes 2026-04-19 22:17:37 -03:00
diegosouzapw
bfe64156bf chore(workflow): clarify release version parity and changelog segregation rules 2026-04-19 22:14:38 -03:00
diegosouzapw
333f0b9f2d chore(release): v3.7.0 — all changes in ONE commit 2026-04-19 22:07:51 -03:00
clousky2020
d6cbdc1580 feat: add ModelScope provider with circuit breaker and daily quota lock (#1430)
Integrated into release/v3.7.0. Thanks @clousky2020 for this massive and important contribution! 🎉 We've translated the deprecation comments to English for consistency, and it is now officially merged into the release branch. Great work on the ModelScope integration and Circuit Breaker!
2026-04-19 21:13:45 -03:00
Benson K B
77f326e0dd fix(dashboard): correct TOML round-trip corruption in codex config serializer (#1438)
Integrated into release/v3.7.0. Thanks @benzntech for this great contribution! 🎉 We've removed the unrelated sync-fork.yml file and it's now merged into the release branch.
2026-04-19 21:08:13 -03:00
diegosouzapw
881f59354d chore: bump version to 3.7.0 2026-04-19 21:07:16 -03:00
diegosouzapw
08d0e9f8b4 fix(security): resolve CodeQL alert 164 ReDoS in extraction and preserve release branch workflow 2026-04-19 20:28:39 -03:00
Diego Rodrigues de Sa e Souza
3432dfd280 Release v3.6.9 (#1404)
* test: resolve typescript strictness complaints in unit tests

* Update Claude Code obfuscation to version 2.1.114 (#1403)

* fix(cloud-code): scope thinking stripping to executor boundaries (#1401)

* fix(cloud-code): scope thinking stripping to executors

* fix(cloud-code): guard antigravity normalized body

* Update Claude Code obfuscation to version 2.1.114

- Update Claude Code version from 2.1.87 to 2.1.114
- Update X-Stainless-Package-Version from 0.80.0 to 0.81.0
- Add new beta flags: redact-thinking-2026-02-12, advisor-tool-2026-03-01, advanced-tool-use-2025-11-20
- Add missing headers: anthropic-version, anthropic-dangerous-direct-browser-access, x-app, X-Stainless-Timeout
- Add all X-Stainless-* headers (Arch, Lang, OS, Runtime, Runtime-Version, Retry-Count)
- Fix accept-encoding header: identity -> gzip, deflate, br, zstd
- Add connection: keep-alive header
- Update tool name mapping: add lsp, apply_patch, websearch

These changes ensure that requests from OpenCode through Omniroute are indistinguishable from genuine Claude Code 2.1.114 requests, allowing proper authentication with Anthropic's API without triggering extra credits errors.

* fix: resolve CodeQL password hash alert and TruffleHog CI failure

---------

Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Diego Rodrigues de Sa e Souza <8016841+diegosouzapw@users.noreply.github.com>
Co-authored-by: Nikolay Popov <ekklesio.dev@gmail.com>
Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>

* fix(claude-code): scope obfuscation to cli clients and fix tests

* docs(workflows): enforce PR merge instead of manual close

* docs(changelog): update 3.6.9 notes with missing PR 1403 and fixes

* docs(workflows): update generate-release to use full changelog for PR body

* fix(tsc): silence baseUrl deprecation warnings for TS 5.5+

* fix(chatcore): apply proactive compression before provider translation (#1406)

Integrated into release/v3.6.9

* docs(changelog): add PR 1406

* Makes text visible in dark-mode (#1409)

Integrated into release/v3.6.9

* docs(changelog): add PR 1409

* chore: save local work

* chore(release): sync version references to 3.6.9

* fix(codex): prevent proactive token refresh consumption and strip background parameter

* ci: shard long-running suites and relax timeouts

* ci: allow manual CI dispatch for release branches

* feat(skills): provider-aware marketplace UX, scored AUTO injection, and memory pipeline hardening (#1411)

* fix/400 for GeminiCLI(add "ref" in GEMINI_UNSUPPORTED_SCHEMA_KEYS)

* feat(cc-compatible): align request shape with Claude CLI

* fix(cc-compatible): add Claude CLI system skeleton for OpenAI input

* preserve reasoning when translating chat to responses (#1414)

Integrated into release/v3.6.9

* fix(skills): optimize AUTO scoring and include Responses input context (#1418)

Integrated into release/v3.6.9

* chore: fix TS errors and update review-prs workflow

* fix(api): stop sending unsupported Gemini and Codex parameters

Prevent Gemini request translation from injecting default
thoughtSignature values that the upstream API strictly validates and
rejects. Only preserve real signatures resolved from prior upstream
responses, and strip additionalProperties from Gemini function schemas
to avoid 400 "Unknown name" errors.

Also remove fallback-injected session_id and conversation_id fields
before sending Codex requests, and restore compatibility with the
legacy OUTBOUND_SSRF_GUARD_ENABLED flag when determining whether
private provider URLs are allowed.

Updates the Gemini translator and regression tests for issue #1410
and related 400 error cases.

* fix(core): stabilization fixes for token refresh, usage translation, and testing

- Update Codex token refresh detection logic
- Mark provider connections invalid on unrecoverable refresh error
- Fix Claude usage translation under-reporting cached tokens
- Update test expectations
- Update CHANGELOG.md for v3.6.9

* fix(auth): reload fresh token state and unify expiry persistence

Refresh checks now re-read the latest stored provider connection before
attempting rotation so they do not use stale refresh tokens captured by
an earlier sweep.

Token updates also persist both expiresAt and tokenExpiresAt across the
health check, usage-limit refresh path, and SSE refresh flow. This keeps
known token expiry metadata in sync and avoids interval-based refreshes
for connections whose tokens are still valid well into the future.

* fix: resolve SSRF environment static evaluation bug (#1427)

Fix import aliases and strict TS typings for tests and ACP agents.

* test: resolve remaining strict type errors in test files

* test: fix provider service assertion for anthropic-compatible header

* fix(codex): respect openaiStoreEnabled setting during native passthrough (#1432)

* fix(codex): fix token refresh unrecoverable detection for expired tokens

* fix(ci): restore release v3.6.9 build and flaky tests

* fix(cc-compatible): trim default OpenAI system skeleton (#1433)

Integrated into release/v3.6.9

* fix: prevent masked API keys from being written to CLI tool configs (#1435)

* feat: mark Qwen provider as deprecated and add deprecation warning to CLI tool (#1437)

* docs(changelog): comprehensive v3.6.9 update with all 59 commits since v3.6.8

* test(ci): align qwen guide settings assertions

* fix(security): resolve CodeQL alert 163 for incomplete URL sanitization in Qwen CLI settings

---------

Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
Co-authored-by: Nikolay Popov <74762779+nikolay-popov-ideogram@users.noreply.github.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Nikolay Popov <ekklesio.dev@gmail.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: Tim Massey <tim-massey@users.noreply.github.com>
Co-authored-by: Paijo <oyi77@users.noreply.github.com>
Co-authored-by: dail45 <dail45@yandex.ru>
Co-authored-by: R.D. <rogerproself@gmail.com>
v3.6.9
2026-04-19 19:50:30 -03:00
Randi
5be86907d7 preserve reasoning when translating chat to responses (#1414)
Integrated into release/v3.6.9
2026-04-19 06:46:54 -03:00
Diego Rodrigues de Sa e Souza
b191842d98 Merge pull request #1392 from diegosouzapw/release/v3.6.9
chore(release): v3.6.9 — Bug Fixes and PR Integrations
2026-04-18 17:16:31 -03:00
Randi
293290e12a fix(cloud-code): scope thinking stripping to executor boundaries (#1401)
* fix(cloud-code): scope thinking stripping to executors

* fix(cloud-code): guard antigravity normalized body
2026-04-18 17:15:59 -03:00
diegosouzapw
bb1e70acab test: align codex passthrough assertion with explicit store retention policy 2026-04-18 17:08:15 -03:00
diegosouzapw
97fe1a1b57 chore: enforce contributor credit rule in review-prs workflow 2026-04-18 16:53:33 -03:00
diegosouzapw
860d596c3b fix: resolve combo-routing-engine test regression and TS errors 2026-04-18 16:53:26 -03:00
diegosouzapw
b909013058 fix: resolve MITM not working when connecting Antigravity (#1399) 2026-04-18 16:53:20 -03:00
diegosouzapw
f979c606fe test: fix store assertion for codex responses 2026-04-18 15:46:25 -03:00
diegosouzapw
4a50b2eb6a chore(release): v3.6.9 — finalize PR integrations and test fixes 2026-04-18 15:35:21 -03:00
Benson K B
f3ae67473b fix(combo): fallback to next model on all-accounts-rate-limited 503 (#1398)
Integrated into release/v3.6.9
2026-04-18 15:35:21 -03:00
Gi99lin
9d32b65a82 fix(codex): cache system prompts for Chat Completions path via convertSystemToDeveloperRole (#1400)
Integrated into release/v3.6.9
2026-04-18 15:10:18 -03:00
Gi99lin
e57126af4f fix(codex): strip server-generated IDs from response items in input to prevent 404 errors (#1397)
Integrated into release/v3.6.9
2026-04-18 15:10:15 -03:00
diegosouzapw
8d1c30ad17 chore: merge main (CodeQL fixes) into release/v3.6.9 2026-04-18 12:02:07 -03:00
diegosouzapw
ecab0edad1 fix(security): Resolve CodeQL alerts (#151, #154, #155-#159)
- Fix insecure randomness in usage service
- Add CodeQL suppression for intentional SHA-512 checksum in callLogArtifacts
- Replace URL string prefix matching with strict hostname validation in tests
- Remove scratch scripts with sensitive data logging
2026-04-18 11:51:24 -03:00
diegosouzapw
d42842ba25 chore: fix CodeQL alerts and missing docker postinstall 2026-04-18 11:44:20 -03:00
diegosouzapw
c1659a1c5e docs(changelog): update v3.6.9 notes with PRs 1393 and 1394 2026-04-18 11:08:50 -03:00
Benson K B
4a560c0b1c feat(cli): add direct config save for Qwen Code (#1394)
Integrated into release/v3.6.9
2026-04-18 10:59:11 -03:00
Benson K B
891189bbf3 feat(cli): derive Claude CLI model defaults from provider registry dynamically (#1393)
Integrated into release/v3.6.9
2026-04-18 10:49:34 -03:00