fjia
411a589781
fix(claude-to-openai): handle OpenAI-format responses in non-streaming path
...
Some providers (e.g. xiaomi-tokenplan -claude models) return OpenAI-format
responses even when request was translated to Claude. Early-return now detects
choices[]. Also strip reasoning_content only when content is non-empty so
thinking models keep their only output.
Closes #1836
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-17 09:43:58 +07:00
decolua
b282f05549
Refactor
2026-06-15 18:18:04 +07:00
decolua
aba4c45da6
fix(translator): ESM-safe registry + tool-id pairing + responses max_tokens; add real-creds tests
...
- translator/index.js: replace require() with static side-effect imports (ESM-safe),
lazy-init registry maps to survive circular import order
- openai-responses->openai: map max_output_tokens -> max_tokens (avoid leaking field upstream)
- gemini/antigravity -> openai: derive deterministic tool_call id from name so
functionCall/functionResponse pair correctly (fixes provider tool-pairing 400s)
- add offline unit tests (finish-reason, usage, session-manager, ollama malformed args, const guard)
- add real-creds integration tests (provider-cases + all-formats matrix: 6 inbound formats x 4 scenarios)
Includes co-located provider registry refactor (pricing/capabilities/media providers) and sessionManager updates.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-15 11:38:43 +07:00
decolua
d3f61aac2f
refactor(open-sse): translator DRY + schema enums, bug fixes, dead code cleanup
...
- Bug B1-B7: media UI m.kind||m.type, serviceKinds, gemini mediaPriority, schema kind, models/info lookup by kind
- Dead code D1-D6: safeParseJSON, drop PROVIDER_ENDPOINTS, orphan fetcher, GITHUB_CONFIG derive, getProviderConfig internal, legacy kiro file
- Translator concerns: toOpenAIUsage, toOpenAIFinish (gemini/kiro/ollama + fix kiro tool finish), thinking effort maps
- Reorg helpers/ → concerns/ (logic) + formats/ (per-format) + schema/ (pure enums: roles/blocks/finishReasons/defaults)
- Wire ~280 hardcoded role/block/finish/default literals to schema enums across 20+ files
- collapseTextParts + extractTextContent dedup
- Normalize translator fn names to openaiToXRequest / xToOpenAIResponse
- Golden tests lock behavior; 0 regression (byte-for-byte providers/alias, 26=26 known fails)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 18:49:38 +07:00
decolua
dd1e0f9bcc
refactor(registry): B2 migrate to LiteLLM-style schema — unified models[] with kind field
...
- 71 registry files: flat `media.*Config.models` → `models[]` with `kind` field
- `media` wrapper removed → serviceKinds, *Config fields promoted top-level
- `type` field renamed to `kind` (llm/image/tts/stt/embedding/embedding/video/music)
- providers/index.js: PROVIDER_MEDIA now built from flat top-level media fields
- shared/constants/providers.js: buildProviderEntry reads flat top-level media fields
- route /v1/models: modelKind() uses kind||type; removed subConfig merge block
- models/info route: removed sub-config fallback lookup (all models in PROVIDER_MODELS)
- ttsProviders/index.js: synthesizeViaConfig reads tts models from PROVIDER_MODELS
- test-models route, helpers.js, validate route: kind||type compat
- Baselines: PROVIDERS 62/62 ✅ , Alias 90/90 ✅
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 14:32:59 +07:00
decolua
e53ce79abb
refactor(open-sse): B1 consolidate media endpoint URLs into registry
...
- image/embed/tts/search base URLs derive from media.*Config.baseUrl /
searchViaChat.endpoint (single source); handlers read PROVIDER_MEDIA.
- ~18 hardcoded endpoints moved: bfl/fal/stability/runway/hf/gemini/
cloudflare/recraft/sdwebui/comfyui/nanobanana image, voyage embed,
gemini/openrouter tts, chatSearch endpoints.
- Byte-identical: PROVIDERS 62 + alias 90 baselines, image buildUrl outputs.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 13:58:12 +07:00
decolua
bb9e9aa91f
refactor(open-sse): registry consolidation + DRY media/oauth/adhoc cleanup
...
- Single-source registry: oauth clientId/tokenUrl, usage URLs, image/embed
configs, search defaultModel, codex fixedPort, google token url derive.
- Remove 29 unused OmniRoute providers (registry 100→71); media intact.
- De-adhoc: codex literals → registry format/oauth flags; reasoningInject,
image/embed openrouter headers + xai bodyFields config-driven.
- Add REGISTRY_TEMPLATE.js + expand PROVIDER_DEFAULTS/schema JSDoc.
- Baselines updated; PROVIDERS 62 + alias 90 byte-for-byte, golden snapshots.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 13:15:48 +07:00
decolua
9105dd0e25
refactor(open-sse): #11 — dedupe client-facing SSE_HEADERS_CORS
...
Gom block SSE headers + CORS lặp ở streamingHandler + responsesHandler
vào sseConstants.SSE_HEADERS_CORS. Codex format-routing giữ nguyên
(logic-driven theo kim chỉ nam DATA/LOGIC docs 07).
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-13 22:06:59 +07:00
decolua
4da1d6dad4
refactor(open-sse): D1c — forceStream hardcode → PROVIDERS schema ( #5 )
...
chatCore providerRequiresStreaming: switch provider-name →
PROVIDERS[provider].forceStream. Thêm forceStream:true vào registry
openai/codex/commandcode. verify-providers allowlist added-fields
(forceStream/urlSuffix verified bằng golden + runtime test riêng).
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-13 22:05:01 +07:00
decolua
87fe069e9e
refactor(open-sse): remove reverse coupling open-sse -> src (E2)
...
Move clineAuth into open-sse/shared (src re-exports back). Add standalone
open-sse/shared/machineId for codex session hashing (no @/lib/dataDir).
sttCore receives sttConfig via param instead of importing AI_PROVIDERS.
No behavior change; gate: no regression (26 known-fails unchanged).
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-13 16:35:07 +07:00
Ngô Tấn Tài
b33cbb0280
feat(vercel-ai-gateway): support embeddings, images and credit usage
...
Extend Vercel AI Gateway beyond chat: add OpenAI-compatible embeddings
and image generation endpoints, credit balance fetch on the usage
dashboard, retry on 429, and models catalog fetcher.
Thinking/reasoning mapping is omitted pending a project-wide refactor.
Co-authored-by: Ngô Tấn Tài <tantai@newnol.io.vn>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-13 10:54:51 +07:00
decolua
4443903900
fix: add normalization for Claude passthrough bodies
2026-06-08 15:37:01 +07:00
decolua
137a25e9ac
fix(qoder): increase timeouts for reasoning models and improve stream handling
2026-06-08 09:17:33 +07:00
decolua
9caea88528
fix(codex): harden streaming timeouts + Responses terminal events
...
Raise stall/connect timeouts to 60s (configurable per-provider), accept
codex response.done, and always emit a terminal response.failed + [DONE]
for Responses passthrough when a stream closes, stalls, or aborts before
a terminal event — preventing codex clients from hanging.
Co-authored-by: jonathanli12 <jonathanli12@users.noreply.github.com>
Co-authored-by: rifuki <rifuki@users.noreply.github.com>
Co-authored-by: nguyenha935 <nguyenha935@users.noreply.github.com>
Co-authored-by: trananhtung <trananhtung@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 16:07:43 +07:00
Giao Ho
0850f0a470
fix(mitm): Kiro binary EventStream crash + add models & TTS tool filtering
...
- server.js: isBinaryData() skips binary AWS EventStream bodies (fix JSON parse crash)
- kiro.js: isBinaryEventStream detection + migrate to pipeTransformedEventStream pipeline
- base.js: add pipeTransformedSSE / pipeTransformedEventStream helpers
- chatCore.js: filter tool messages + tools for TTS models via getModelType()
- providerModels.js: add getModelType()
- cliTools.js: add gpt-5-mini (Copilot), glm-5 & minimax-m2.5 (Kiro)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 11:31:52 +07:00
Mr_NoboDy
40cfa63eb8
feat(xiaomi-tokenplan): add Claude-native MiMo V2.5 Pro alias via dedicated executor
...
Add mimo-v2.5-pro-claude alias routing to the Xiaomi TokenPlan Anthropic-compatible
/anthropic/v1/messages endpoint. Logic lives in a dedicated XiaomiTokenplanExecutor
(config-driven via targetFormat) instead of the shared DefaultExecutor.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 10:36:03 +07:00
hodtien
41f94ce8c8
fix(minimax): Bổ sung MiniMax-M3 + cập nhật Quota Tracker coding/CN
...
Squash-merge PR #1631 (decolua/9router) — chỉ lấy file code + test, bỏ docs.
- feat(minimax): add MiniMax-M3 to intl + cn provider models (targetFormat claude)
- feat(minimax): add MiniMax-M3 pricing entry
- fix(minimax): translate Claude body khi content=null (M3 thinking-only)
- fix(minimax): hiển thị quota M-series bucket "general"/"MiniMax-M*" + percent-only
- test: minimax usage / model registration / pricing
Co-Authored-By: Claude <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-06 10:01:05 +07:00
nguyenha935
7bc97eae7b
fix(embeddings): forward Gemini output dimensions ( #1366 )
...
Co-authored-by: GoClaw Operator <operator@goclaw>
2026-05-23 09:23:26 +07:00
Muhammad Mugni Hadi
d976f4cc87
feat(xai): add xAI Grok provider with OAuth + API key auth + image
...
Adapted from PR #1286 (mugnimaestra/feat/xai-grok-provider) to match
existing app architecture. Includes:
- OAuth 2.0 with PKCE on loopback port 56121 (Grok Build)
- API key auth path (console.x.ai)
- Token refresh wiring (open-sse + sse tokenRefresh)
- Dashboard OAuth modal with fixed-port flow + manual code fallback
- Provider registry entries (OAuth + API key)
- xAI image generation via OpenAI-compatible adapter
(grok-2-image-1212 model, no size/quality/style params)
Excludes (intentionally, to match app patterns):
- Custom xAI Responses executor (DefaultExecutor handles /chat/completions)
- xAI-specific translators (app uses OpenAI as intermediate format)
- Image edits (not supported by current imageGenerationCore)
- Video endpoints (app has no video subsystem yet)
- CLI xai-login command
Refs decolua#1286
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 11:33:18 +07:00
YourAnsh
eaccb19f59
feat: add DeepSeek TUI as CLI tool in dashboard ( #1088 )
...
Co-authored-by: Ansh7473 <your-github-email@example.com>
2026-05-13 22:40:42 +07:00
Thiên Toán
74c9879e8e
feat: add minimax tts support ( #1043 )
2026-05-13 15:34:10 +07:00
Aleksei
ea44ca049e
Add Codex GPT 5.5 image support ( #991 )
2026-05-12 09:26:13 +07:00
decolua
8f4d29caa4
# v0.4.30 (2026-05-11)
...
## Features
- MCP stdio→SSE bridge: expose local stdio MCP plugins over SSE (api/mcp/[plugin]/sse, /message)
- Dynamic Linux cert resolution + NSS DB injection (Debian/Arch/Fedora/openSUSE, Chrome/Chromium/Firefox incl. snap) (#1010 )
- Cowork tool: expanded settings UI & API
- GitBook docs (DocsContent, DocsLayout)
## Fixes
- OAuth callback postMessage scoped to expected origins (CWE-1385) (#998 )
- Re-enable TLS verification on DNS-bypass fetch (CWE-295) (#998 )
- Normalize `developer` role → `system` for OpenAI-format providers (Deepseek, Groq, …) (#1011 , closes #773 )
- Respect `PORT` env in internal model-test fetch (#1014 )
- Dropdown text readability in dark theme on usage page (#997 )
## Improvements
- Refactor Claude CLI spoof headers into shared constant
- Tool deduper utility in open-sse handlers
2026-05-12 09:19:50 +07:00
Aleksei
787d248030
Add Cloudflare Workers AI image generation ( #973 )
2026-05-09 09:53:39 +07:00
decolua
b72a443bd3
feat: add CommandCode provider support
2026-05-07 23:01:33 +07:00
decolua
d4bc42e1f5
feat: add STT support, Gemini TTS, and expand usage tracking
...
- Speech-to-Text: full pipeline with sttCore handler, /v1/audio/transcriptions
endpoint, sttConfig for OpenAI, Gemini, Groq, Deepgram, AssemblyAI,
HuggingFace, NVIDIA Parakeet; new 9router-stt skill
- Gemini TTS: add gemini provider with 30 prebuilt voices and TTS_PROVIDER_CONFIG
- Usage: implement GLM (intl/cn) and MiniMax (intl/cn) quota fetchers; refactor
Gemini CLI usage to use retrieveUserQuota with per-model buckets
- Disabled models: lowdb-backed disabledModelsDb + /api/models/disabled route
- Header search: reusable Zustand store (headerSearchStore) wired into Header
- CLI tools: add Claude Cowork tool card and cowork-settings API
- Providers: introduce mediaPriority sorting in getProvidersByKind, add
Kimi K2.6, reorder hermes, drop qwen STT kind
- UI: expand media-providers/[kind]/[id] page (+314), enhance OAuthModal,
ModelSelectModal, ProviderTopology, ProxyPools, ProviderLimits
- Assets: refresh provider PNGs (alicode, byteplus, cloudflare-ai, nvidia,
ollama, vertex, volcengine-ark) and add aws-polly, fal-ai, jina-ai, recraft,
runwayml, stability-ai, topaz, black-forest-labs
2026-05-05 10:32:59 +07:00
decolua
9c6be62a54
Feat : Skills
2026-05-04 11:29:02 +07:00
decolua
936d65ae1c
Enhance chat handling and introduce Caveman feature
...
- Refactored handleChatCore to include Caveman functionality, allowing for terse-style system prompts to reduce output token usage.
- Updated APIPageClient to manage Caveman settings, including enabling/disabling and selecting compression levels.
- Adjusted AntigravityExecutor to consolidate function declarations for compatibility with Gemini.
- Removed unnecessary console logs during translator initialization across multiple routes.
2026-04-30 18:00:38 +07:00
decolua
512e3de371
Update version to 0.4.9, enhance README with Trendshift badge, and add new embedding models to providerModels.js. Refactor TTS handling to support additional providers and improve API key validation for media providers.
2026-04-29 11:34:39 +07:00
decolua
8f81363675
Enhance token refresh functionality across multiple executors
...
- Updated refreshCredentials methods in various executors (Antigravity, Base, Default, Github, Kiro) to accept optional proxyOptions for improved proxy handling.
- Modified token refresh logic to utilize proxy-aware fetch for better network management.
- Enhanced usage retrieval functions to support proxy options, ensuring seamless integration with proxy configurations.
- Updated ModelSelectModal and ProviderInfoCard components to incorporate kind filtering for improved user experience in model selection.
- Added validation for API keys in the provider validation route, including support for webSearch/webFetch providers.
2026-04-28 17:28:57 +07:00
lukmanfauzie
222e22fa53
Fix GitHub Copilot agent mode with Antigravity
...
Co-authored-by: Copilot <copilot@github.com>
2026-04-26 17:47:13 +08:00
decolua
83418e8a9d
Add codex to image providers
2026-04-25 17:01:40 +07:00
decolua
0b8bed5793
Enhance image and embedding provider support
...
- Added new image models for GPT 5.2, 5.3, and 5.4, including capabilities for text-to-image and editing.
- Updated embedding handling to include optional dimensions in requests.
- Introduced support for custom embedding providers, allowing dynamic fetching and validation of custom nodes.
- Improved image generation handling with Codex integration, including progress tracking and error handling.
- Enhanced UI components to support adding custom embeddings and displaying their status.
2026-04-25 16:22:30 +07:00
decolua
cca615eaff
- Cap maximum cooldown for rate limit handling in account unavailability and single-model chat flows
...
- Dynamic custom model fetching for model selection
2026-04-24 16:14:18 +07:00
decolua
030fb34f88
- Updated markAccountUnavailable function to accept resetsAtMs for precise cooldown management.
...
- Added email backfill functionality for Codex OAuth connections to improve account information accuracy.
2026-04-24 11:36:16 +07:00
decolua
5abc9e5c74
add GPT 5.5 model
2026-04-24 09:51:05 +07:00
decolua
45731ae639
feat: add OpenCode Go provider and support for custom models
...
- Introduced OpenCode Go provider with relevant configurations.
- Enhanced model management by allowing users to add and delete custom models.
- Updated UI components to support model selection for image types.
- Adjusted sidebar visibility to include image media kinds.
2026-04-22 14:16:21 +07:00
decolua
b669b6ffc1
Refactor error handling to config-driven approach with centralized error rules
...
Made-with: Cursor
2026-04-15 11:46:47 +07:00
decolua
6a6e2fcd77
Fix : noAuth support for providers and adjusted MITM restart settings.
2026-04-14 10:14:50 +07:00
decolua
4c28a1671d
Enhance provider models and chat handling with new thinking configurations
2026-04-13 12:04:57 +07:00
decolua
89eb26dee2
Enhance proxy functionality with Vercel relay support
2026-04-13 10:08:24 +07:00
decolua
b3feb96740
Enhance TTS functionality and security settings
...
- Integrated Google TTS languages from a separate module for better maintainability.
- Updated local device voice fetching to support both macOS and Windows, improving cross-platform compatibility.
- Enhanced dashboard route protection by adding dynamic settings for login requirements and tunnel access.
- Introduced UI elements for managing security settings related to API key requirements and dashboard access via tunnel.
- Added default TTS response example in the media provider page for better user guidance.
- Updated constants to reflect changes in TTS provider configurations.
This commit improves the overall user experience and security of the TTS features.
2026-04-11 14:56:35 +07:00
Omar Nahhas Sanchez
878cdf302b
fix: only strip reasoning_content when content is non-empty ( #542 )
...
sseToJsonHandler.js unconditionally deleted reasoning_content from all
non-streaming responses (added for Firecrawl SDK compatibility). This
breaks thinking models (Qwen3.5, Claude extended thinking, etc.) where
the model may use all tokens for reasoning, leaving content empty.
When reasoning_content is stripped in that case, the response appears
completely empty to the client.
Fix: only strip reasoning_content when the response also has non-empty
content, so that reasoning output is preserved when it is the only
useful output.
Co-authored-by: Agent Zero <agent@agent-zero.local>
2026-04-10 10:28:58 +07:00
decolua
3c96e8d6d1
Feat : tts
2026-04-10 10:17:53 +07:00
decolua
401772cb9a
Fix bug strip image
2026-04-07 10:18:59 +07:00
Anurag Saxena
a53ccf1343
fix: strip reasoning_content from non-streaming responses ( closes #509 ) ( #517 )
2026-04-07 09:46:28 +07:00
decolua
67e0db77da
Fix : Updated Anthropic-Beta header.
2026-04-05 07:46:26 +07:00
kwanLeeFrmVi
666aecfc7c
feat(translator): lossless passthrough via CLI tool + provider pairing
...
Add clientDetector utility to identify CLI tools (Claude Code, Gemini CLI,
Antigravity, Codex) from request headers. When the CLI tool and provider
are a native pair, skip all translation — only swap model and Bearer token.
Made-with: Cursor
2026-04-04 23:48:58 +07:00
decolua
333e704b2a
MODEL_CAPS
2026-04-04 23:24:24 +07:00
Anurag Saxena
e3a7733a08
fix: strip functionCall/functionResponse id and synthetic thoughtSignature for Vertex AI ( closes #388 ) ( #414 )
2026-03-27 10:46:47 +07:00