Commit graph

260 commits

Author SHA1 Message Date
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
65f11a603e feat: add Azure OpenAI provider support 2026-04-24 10:04:59 +07:00
kenlin
f2e7a98ce0
feat: add built-in Volcengine Ark provider support (#741)
Add Volcengine Ark as a first-class API key provider with official model presets, endpoint configuration, API key validation, model discovery, connection testing, provider logo, and runtime alias mapping for `ark/*` model IDs.

Made-with: Cursor

Co-authored-by: kingsy <kingsylin@vip.qq.com>
2026-04-24 09:28:50 +07:00
decolua
368f4c3e7f - Added Hermes tool to CLI tools and updated related components. 2026-04-23 16:39:31 +07:00
decolua
8de9aae90c Feature : RTK compress 2026-04-22 15:36:51 +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
abb04c5366 feat: add support for Grok Web and Perplexity Web providers 2026-04-22 11:58:53 +07:00
anuragg-saxenaa
4638cf0e81 fix(ollama-local): support custom host URL for remote Ollama servers (closes #578)
Add a shared resolveOllamaLocalHost() helper and wire it through the
executor, models/validate/test routes, so users can point ollama-local
at a remote Ollama instance instead of being locked to localhost:11434.

Also expose the host as an "Ollama Host URL" field in AddApiKeyModal
(empty = default localhost:11434), making the option reachable from the
dashboard without hand-editing db.json.

Co-authored-by: anuragg-saxenaa <anuragg.saxenaa@gmail.com>
Made-with: Cursor
2026-04-22 10:45:46 +07:00
Anurag Saxena
94ab0d715d
fix: update Qwen OAuth URLs from chat.qwen.ai to qwen.ai (closes #572) (#683)
* fix: make version update banner clickable to copy install command (closes #598)

* fix: resolve ollama-local baseUrl from providerSpecificData.baseUrl for remote Ollama hosts (closes #578)

* fix: add Ollama Cloud to usage/quota tracking (closes #681)

* fix: update Qwen OAuth URLs from chat.qwen.ai to qwen.ai per issue #572
2026-04-22 10:32:28 +07:00
Anurag Saxena
f825a523ab
fix: add clipboard fallback for navigator.clipboard unavailable contexts (closes #696) (#699) 2026-04-22 10:12:55 +07:00
Luan Dias
afc4c308bb
fix: keep play_arrow spinning instead of switching to sync/progress_activity (#715)
The sync icon has counter-clockwise arrows by design, making the spin
animation appear counter-clockwise even though CSS rotates clockwise.
Keep play_arrow as the icon in both loading and idle states so the
clockwise spin is visually unambiguous.
2026-04-22 10:01:14 +07:00
decolua
6ab9927a28 fix: update backoff configuration and improve CLI detection messages
- Added installation guides for manual configuration in DroidToolCard.js and other tool cards to assist users in setting up the necessary CLI tools.
2026-04-17 12:54:50 +07:00
Anurag Saxena
877b7446bb
fix: enable Codex Apply/Reset buttons when CLI is installed (closes #591) (#606) 2026-04-17 12:23:02 +07:00
Anurag Saxena
f27db5429d
fix: show manual config option when Claude CLI detection fails (closes #589) (#602) 2026-04-17 12:21:21 +07:00
decolua
75c4598da0 Add marked package, update Qwen executor for OAuth handling, and enhance changelog styles 2026-04-17 12:15:10 +07:00
decolua
75ad0bef8e Refactor error handling and localDb structure, and fix usage tracking bug. 2026-04-17 12:15:10 +07:00
Anurag Saxena
3badf1cbb6
fix: add Blackbox AI as a supported provider (closes #599) (#630)
* fix: add multi-model support for Factory Droid CLI tool (closes #521)

* Add Claude Opus 4.7 to cc and cl provider lists

RESEARCH confirmed GA release April 16, 2026. Adding to:
- cc (Claude Code): claude-opus-4-7
- cl (Cline): anthropic/claude-opus-4.7

Refs: TICKET-20260416-ENG-O4.7-001

* fix: add Blackbox AI as a supported provider (closes #599)
2026-04-17 12:06:00 +07:00
Anurag Saxena
1d872ce254
fix: add multi-model support for Factory Droid CLI tool (closes #521) (#618) 2026-04-17 12:04:46 +07:00
Anurag Saxena
63dbf89207
fix: show manual config option when OpenClaw detection fails (closes #579) (#615) 2026-04-17 12:04:14 +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
Dang Dinh Quan
b1288c5064
* feat(kiro): wire aws identity center device flow into provider oauth (#587)
* feat(kiro): wire aws identity center device flow into provider oauth

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
2026-04-15 11:44:46 +07:00
decolua
224981d537 Fix bug 2026-04-14 12:51:23 +07:00
decolua
1fa05eb2ab Refactor execSync and spawn calls to include windowsHide option for better compatibility on Windows environments. 2026-04-14 11:48:59 +07:00
decolua
04cdb75839 Add proactive token refresh lead times for providers and implement Codex proxy management 2026-04-14 11:41:06 +07:00
decolua
4bff21cb80 Enhance CodexExecutor with compact URL support 2026-04-14 10:18:27 +07:00
decolua
6a6e2fcd77 Fix : noAuth support for providers and adjusted MITM restart settings. 2026-04-14 10:14:50 +07:00
decolua
41c079baba - Improved dashboard access control by blocking tunnel/Tailscale access when disabled. 2026-04-13 17:38:09 +07:00
decolua
96ddec822d Fix Bug 2026-04-13 16:49:34 +07:00
decolua
3b1a608e8d Fix codex cache session id 2026-04-13 15:52:01 +07:00
decolua
4c28a1671d Enhance provider models and chat handling with new thinking configurations 2026-04-13 12:04:57 +07:00
decolua
ee1271b6fd Update GitHub Actions workflow for Docker image 2026-04-13 10:30:33 +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
decolua
ed17a8ffac Feat : Tailscale 2026-04-11 11:36:33 +07:00
Omar Nahhas Sanchez
838d9a7a04
fix: add 5s timeout to fetchCompatibleModelIds and skip upstream connections (#541)
The fetchCompatibleModelIds() function had no timeout on its fetch() call,
causing /v1/models to hang indefinitely when an openai-compatible provider
was unreachable or slow to respond.

Additionally, upstream/cross-instance connections (provider IDs containing
a UUID suffix like openai-compatible-chat-XXXXXXXX) would trigger recursive
/models fetches between instances, creating infinite loops.

Fixes:
- Add AbortController with 5-second timeout to the fetch() call
- Skip dynamic model fetching for upstream/cross-instance connections
  (detected by UUID suffix pattern in provider ID)
- Existing try/catch already handles abort errors gracefully

Co-authored-by: Agent Zero <agent@agent-zero.local>
2026-04-10 10:30:07 +07:00
raccoonwannafly
f8a267746a fix: enable Apply button when models are selected
Fix button state condition - check selectedModels.length instead of selectedModel.

Co-authored-by: raccoonwannafly <130273473+raccoonwannafly@users.noreply.github.com>
Made-with: Cursor
2026-04-10 10:27:21 +07:00
decolua
1a25c6e3b5 feat: multi-model support for OpenCode CLI config with subagent integration
- Allow selecting multiple models for 9router provider
- Merge models instead of overwriting (backwards-compatible)
- Support setting active model via click or Apply
- Click active model to clear default (model = '')
- Remove individual models via X button (persists to config)
- Add PATCH endpoint for clearing active model
- Update GET to return normalized model list
- Preserve subagent model configuration for explorer subagent

Made-with: Cursor
2026-04-10 10:22:42 +07:00
decolua
3c96e8d6d1 Feat : tts 2026-04-10 10:17:53 +07:00
decolua
39545cf4c8 Fix combo modal 2026-04-09 10:16:11 +07:00
tuanaiseo
1f3d3a8f7f
fix(security)(app): unauthenticated server shutdown endpoint enables d (#519)
The shutdown API calls `process.exit(0)` on POST without any authentication or authorization checks. Any party that can reach this endpoint can terminate the server process, causing immediate service disruption.

Affected files: route.js

Signed-off-by: tuanaiseo <221258316+tuanaiseo@users.noreply.github.com>
2026-04-08 15:39:09 +07:00
decolua
00448b389b Fix bug 2026-04-07 11:35:25 +07:00
decolua
fca829aa2a Fix bug 2026-04-06 17:36:04 +07:00
decolua
307be3b63d Fix bug 2026-04-06 17:32:44 +07:00
Anurag Saxena
7db4b9834e
fix: make API key optional for ollama-local provider validation (closes #492) (#493) 2026-04-06 15:10:15 +07:00
thuanhuynhh
ebb8d4eeb6
Cập nhật /v1/models hỗ trợ OpenAI/Anthropic Compatible (#497)
Sửa lỗi /v1/models chỉ biết lấy model từ danh sách tĩnh hoặc từ providerSpecificData.enabledModels. Với API Key Compatible Providers, endpoint test /api/providers/<id>/models vẫn lấy được model động từ upstream, nhưng /v1/models lại không fallback sang danh sách động đó. Ngoài ra alias trả ra cũng đang dùng providerId nội bộ thay vì prefix trong cấu hình.

Đã fix để OpenAI/Anthropic Compatible dùng đúng prefix làm alias public nếu chưa có enabledModels, /v1/models sẽ tự fetch động từ upstream /models
2026-04-06 15:09:58 +07:00
decolua
333e704b2a MODEL_CAPS 2026-04-04 23:24:24 +07:00
decolua
5448eedbdd Feat : embedding dev 2026-04-04 15:07:07 +07:00
decolua
d84489dba4 - Introduce default MITM router base URL and update related components to handle it.
- Add input for MITM router base URL in MitmServerCard component.
2026-04-04 11:25:58 +07:00
Anurag Saxena
2e740ad7e4
fix: pass isFree prop to ModelRow for custom models (closes #461) (#480) 2026-04-04 08:53:11 +07:00
Anurag Saxena
006c337de5
fix: use which instead of command -v for openclaw CLI detection (closes #457) (#489) 2026-04-04 08:49:59 +07:00
decolua
93b8668e9e Fix AG 2026-04-01 11:48:38 +07:00
decolua
9708541f6d Fix bug 2026-03-31 15:44:19 +07:00
Vishal Raj V
8640503b36
feat(kilo): fetch free models from Kilo API + Windows build fixes (#455)
- Add /api/providers/kilo/free-models endpoint with 1hr cache
- Fetch and merge Kilo free models with hardcoded models for kilocode provider
- Display 'Free' badge on models fetched from Kilo API
- Fix Windows build: add cross-env, remove --webpack flag, add turbopack config
- Add outputFileTracingExcludes for Windows system directories
2026-03-31 09:22:21 +07:00
kwanLeeFrmVi
054facb08b fix(gemini): preserve thoughtSignature via tool_call ID smuggling + fix ELOCKED mutex
- Encode thoughtSignature into tool_call.id using _TSIG_ delimiter and base64url
- Decode _TSIG_ on request to restore thoughtSignature for Gemini multi-turn thinking
- Track pendingThoughtSignature across parts for deferred signature attachment
- Add LocalMutex (2-layer locking) to prevent ELOCKED on concurrent DB access
- Increase lockfile retries from 5 to 15 for multi-process robustness
- Restore db.json seed on first run to prevent ENOENT on lockfile.lock
- Use process.env.BASE_URL fallback in models test route
- Remove gemini-3-flash-lite-preview from provider models

Co-authored-by: kwanLeeFrmVi <quanle96@outlook.com>
Closes #450

Made-with: Cursor
2026-03-30 16:57:28 +07:00
decolua
e6299eef56 Fix Bug 2026-03-30 12:21:24 +07:00
decolua
abbf8ec86f feat: add GitLab Duo and CodeBuddy support, update observability settings 2026-03-30 11:28:07 +07:00
decolua
bf99c600f1 Fix Bug 2026-03-27 11:45:54 +07:00
decolua
3f47038933 fix: rename tunnelUrl to tunnelPublicUrl for clarity in CLIToolsPageClient 2026-03-27 11:03:49 +07:00
Anurag Saxena
a6c764d772
fix: use better-sqlite3 for Cursor auto-import, drop sqlite3 CLI requirement (closes #395) (#411) 2026-03-27 10:45:11 +07:00
Anurag Saxena
2f0fd348c5
fix: add deprecation warning for Gemini CLI provider (closes #362) (#406) 2026-03-27 10:41:35 +07:00
decolua
8759545260 chore: add proper-lockfile for safe database read/write operations and implement retry logic for file access 2026-03-27 10:31:35 +07:00
decolua
3059df4014 chore: - Adjust opacity settings for ConnectionRow to improve user experience. 2026-03-26 10:48:53 +07:00
Ibrahim Ryan
8312af79a4 fix(cursor): verify Cursor installation on Linux before auto-import
On Linux, verify that Cursor IDE is actually installed before importing
tokens. Previously, leftover config files from a removed Cursor installation
would trigger a false positive, creating a phantom Cursor provider connection.

The check uses `which cursor` and falls back to checking for a .desktop file
in ~/.local/share/applications/

Fixes #313

Co-authored-by: Ibrahim Ryan <ryan@nuevanext.com>
Made-with: Cursor
2026-03-23 10:31:48 +07:00
Ryan
97f2a00e74
fix: test Codex connection against actual endpoint (#347)
Change Codex test from token-expiry-only check to probing the real
Codex API endpoint. Sends a minimal request body that triggers a fast
400 without consuming quota. A 400 confirms auth works; only 401/403
indicates a bad token.

Also adds generic acceptStatuses support to the OAuth test framework
so other providers can define non-200 success statuses.
2026-03-23 10:29:28 +07:00
Ryan
1ed6c4c76f
fix: prevent duplicate model aliases on import (#340) 2026-03-23 10:27:50 +07:00
decolua
3e694a383f feat(combos): add per-combo round-robin strategy
Add ability to configure round-robin strategy for individual combos,
similar to per-provider strategy overrides.

Changes:
- Add comboStrategies setting to store per-combo strategy overrides
- Add Round Robin toggle to each combo card in combos page
- Update chat handler to check combo-specific strategy before global
- Combo-specific strategy takes precedence over global comboStrategy

When enabled, each request to that combo will cycle through providers
instead of always starting with the first one.

Made-with: Cursor
2026-03-23 10:08:24 +07:00
bitgineer
96f5e5c92a
Add combo round-robin strategy to distribute load across providers (#390)
- Add comboRotationState Map to track rotation per combo
- Add getRotatedModels() to rotate model order based on strategy
- Pass comboName and comboStrategy to handleComboChat()
- Add comboStrategy setting (default: fallback)
- Add UI toggle for Combo Round Robin in profile settings

When enabled, each request to a combo starts with a different provider
instead of always starting with the first one, distributing load evenly.

Co-authored-by: Antigravity Agent <antigravity@example.com>
2026-03-23 09:52:31 +07:00
Nguyễn Trung Hiếu
6b0cced884 feat(ui): add Basic Chat interface for testing models
Add a simple chat UI to the dashboard for quickly testing AI models from
connected providers. Features include:
- Model picker from all connected providers
- Streaming chat responses
- Image attachment support
- Session history with localStorage persistence
- Responsive design with dark theme

Note: Removed build.sh from original PR as it contained syntax errors and
was unrelated to the chat UI feature.

Co-authored-by: Nguyễn Trung Hiếu <140531897+bonelag@users.noreply.github.com>
Made-with: Cursor
2026-03-23 09:45:04 +07:00
Andrew Peltekci
3f852775c6
fix(cursor): remove sql.js dependency from auto-import route (#368)
* fix(usage): track lifetime request total beyond history cap

* fix(ui): restore provider assets and model availability endpoint

* fix(cursor): remove sql.js dependency from auto-import route
2026-03-23 09:17:42 +07:00
Andrew Peltekci
9fe4726f34
fix(ui): restore provider assets and model availability endpoint (#367)
* fix(usage): track lifetime request total beyond history cap

* fix(ui): restore provider assets and model availability endpoint
2026-03-23 09:16:10 +07:00
decolua
c8d2497423 refactor: update MitmServerCard and MitmToolCard to use modalError instead of message for error handling
- Replaced message state with modalError in both components for better error management.
- Removed unused message display logic and adjusted action handling to improve clarity.
- Enhanced error handling in doAction and doDnsAction functions to ignore errors gracefully.
- Updated API call responses to streamline user feedback on actions.
2026-03-20 12:44:20 +07:00
decolua
80583e203d Fix : Tunnel 2026-03-19 23:47:13 +07:00
decolua
f1c53a319e refactor: update MITM bypass logic and enhance combo name validation 2026-03-19 22:47:32 +07:00
decolua
fd4ec9e5b8 - Enhance passthrough function to support response inspection
- Add cursor tool configuration and update related components
2026-03-19 15:32:29 +07:00
decolua
03ff35100d Feat : Kiro MITM 2026-03-17 16:12:25 +07:00
decolua
62d7e61907 Fix MITM window 2026-03-16 09:27:26 +07:00
moophat
65af4328fd
Add optional modelID input for custom API Key Providers testing (#315)
* feat: add modelId fallback for provider validation

- If /models endpoint unavailable, validate via /chat/completions
- Add optional Model ID input in EditCompatibleNodeModal
- Improves compatibility with providers lacking /models endpoint

* feat: improve provider validation with modelId fallback

- Add Model ID input for chat/completions fallback validation
- Reorder UI: API Key → Model ID → Check button + Badge
- Display detailed BE error messages in FE
- Add status-specific error handling (401/403/400/404/5xx)
- Add unit tests for error message helpers
- Add vitest devDependency
2026-03-16 09:21:05 +07:00
decolua
1dd5d60724 Fix : MITM 2026-03-14 23:59:22 +07:00
decolua
f264bb9a23 Refactor error logging to provide clearer context on provider failures 2026-03-14 17:08:11 +07:00
decolua
b98f4ce20e refactor: Fix MITM 2026-03-14 16:38:44 +07:00
decolua
877eea8ebe chore: Update package version to 0.3.51 and improve connection handling in API route 2026-03-14 11:56:29 +07:00
Quan
39f651f5be feat: Add Google Cloud Vertex AI provider support (vertex, vertex-partner)
Co-authored-by: Quan <quanle96@outlook.com>
PR: https://github.com/decolua/9router/pull/298

Thanks to @kwanLeeFrmVi for the original implementation. Here is a summary
of changes made during review integration:

- Replaced google-auth-library with jose (already a project dependency)
  for SA JSON -> OAuth2 Bearer token minting (RS256 JWT assertion flow)
- Moved auth logic (parseSaJson, refreshVertexToken, token cache) from
  executor into open-sse/services/tokenRefresh.js to match project pattern
- Fixed executor to use proxyAwareFetch instead of raw fetch (proxy support)
- Simplified buildUrl: use global aiplatform.googleapis.com endpoint for
  both vertex (Gemini) and vertex-partner; removed region/modelFamily fields
- Added auto-detection of GCP project_id from raw API key via probe request
  (vertex-partner only, cached per key)
- Added vertex/vertex-partner cases to /api/providers/validate/route.js
- Updated model lists based on live testing:
  - vertex: gemini-3.1-pro-preview, gemini-3.1-flash-lite-preview,
    gemini-3-flash-preview, gemini-2.5-flash (removed gemini-2.5-pro: 404)
  - vertex-partner: deepseek-v3.2, qwen3-next-80b (instruct+thinking),
    glm-5 (removed Mistral/Llama: not enabled in test project)
  - gemini provider: added gemini-3.1-pro-preview, gemini-3.1-flash-lite-preview
- Removed bun.lock (project uses npm/package-lock.json)
- Removed region and modelFamily UI fields (global endpoint, auto-detect)
- Kiro token auto-refresh on AccessDeniedException (from commit 2)

Made-with: Cursor
2026-03-14 11:37:23 +07:00
decolua
adae2605bf Feat : Auto restart after crash 2026-03-14 09:37:29 +07:00
decolua
399adca63d feat: Add support for local Ollama Local provider 2026-03-13 10:22:59 +07:00
decolua
373b10ebb5 feat(chat): Enhance bypass handling and introduce CC filter naming feature
Fix : Ollam Provider response
2026-03-13 09:41:40 +07:00
decolua
8223c87988 feat(memory-management): Introduce MEMORY_CONFIG for session and DNS management, including session TTL, cleanup intervals, and proxy dispatcher limits. 2026-03-12 15:57:21 +07:00
decolua
372b985ee9 fix(translator): Ensure loading state is reset after error handling in TranslatorPage 2026-03-12 15:45:41 +07:00
decolua
32e3980a13 feat(ollama): Add Ollama provider support with models and configuration, including API endpoints and UI updates. 2026-03-12 15:24:02 +07:00
decolua
a224f68e5c feat(kimi-coding): Added Kimi Coding to the list of supported OAuth providers with specific configuration. 2026-03-12 10:48:11 +07:00
decolua
f1bf027c68 feat(usage): claude quota tracker 2026-03-12 09:42:17 +07:00
decolua
fe49b61dfb feat: - Introduced per-provider strategy overrides in settings, allowing for more flexible connection management.
- Added new provider models: DeepSeek 3.1, DeepSeek 3.2, and Qwen3 Coder Next.
- Implemented UI changes to support round-robin strategy with sticky limits in the provider detail page.
- Improved logging to display connection names instead of IDs for better clarity.
2026-03-11 18:04:38 +07:00
Hưng Nguyễn
2470ef84de
feat: add confbox dependency and refactor TOML parsing in codex settings (#282)
fix: update JSDoc for refreshAndUpdateCredentials return type
2026-03-11 17:00:49 +07:00
decolua
a501c05969 fix(api): improve access token handling during credential refresh 2026-03-10 16:38:32 +07:00
vothaianh
076e70c5a6 refactor(providers): simplify proxy UX — hover button + inline dropdown, remove selection toolbar
Made-with: Cursor
2026-03-09 17:17:59 +07:00
decolua
8c8eeecc70 refactor: replace better-sqlite3 with lowdb for request details storage
- Removed better-sqlite3 dependency and implemented lowdb for JSON-based storage.
- Updated observability settings handling and configuration retrieval.
- Cleaned up unused observability settings UI components in ProfilePage.
- Adjusted contributors badge display in README for better visibility.
2026-03-09 16:50:18 +07:00
apeltekci
29f3e1894e fix(cline): use workos auth token shape
Made-with: Cursor
2026-03-09 16:21:29 +07:00
decolua
9bca03bff7 chore: Delete the proxy pools migration API route.
Made-with: Cursor
2026-03-09 15:49:18 +07:00
Peter Steinberger
f94ac213b5 fix: avoid lost writes by running bulk proxy pool updates sequentially against JSON db
Made-with: Cursor
2026-03-09 15:48:21 +07:00
decolua
880f4eca91 feat(proxy): add proxy pool and per-connection binding + strictProxy support
- Centralize proxy management with reusable proxy pools
- Per-connection proxy binding with legacy fallback
- Add strictProxy option: fail hard instead of silently falling back to direct
- Resolve alicode-intl conflict: keep alicode-intl support + proxy support

Made-with: Cursor
2026-03-09 15:46:06 +07:00
Andrew Peltekci
4c469291a1
fix(test): support cline and kilocode oauth checks (#258) 2026-03-07 11:10:53 +07:00