Commit Graph

3952 Commits

Author SHA1 Message Date
tombii
557509ef84 fix(model-sync): skip replace when auto-sync returns empty model list
Prevent auto-sync from wiping manually-imported models when the upstream
/models endpoint fails, times out, or returns an empty list. Added
`allowEmpty` option (default false) to replaceCustomModels — callers that
intentionally clear all models (DELETE ?all=true) pass `allowEmpty: true`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:01:30 +02:00
AndrewDragonIV
56f1c53084 fix: use snake_case mime_type to match Gemini API convention 2026-04-01 23:54:10 +03:00
AndrewDragonIV
afefee2357 fix(antigravity): add image passthrough for Claude models
The wrapInCloudCodeEnvelopeForClaude function converts Claude message
blocks to Antigravity/Gemini parts format but only handles text,
tool_use, and tool_result types. Image blocks (type: 'image' with
base64 source) are silently dropped, causing Claude models routed
through Antigravity to never receive image content.

This adds handling for image blocks, converting them to inlineData
format (the same format the Gemini path already uses successfully).

Tested: Claude via Antigravity now correctly receives and describes
image content that was previously invisible.
2026-04-01 23:40:07 +03:00
diegosouzapw
bfeb1693d6 chore: documents 2026-04-01 12:34:37 -03:00
fly-io[bot]
3f82b05f4f Merge pull request #1 from xiaoge1688/flyio-new-files
Fly.io Launch config files
2026-04-01 15:02:38 +00:00
Fly.io
1fca80e27d New files from Fly.io Launch 2026-04-01 14:49:27 +00:00
William Finger
7928bede1e test: fix 4 failing unit tests (copilot-usage, request-log-migration)
- copilot-usage: use future reset date (2026-12-31) to avoid stale
  quota window causing remainingPercentage to reset to 100%
- request-log-migration: close SQLite DB before cleanup to release
  Windows file locks; remove stale archive dir before second test
2026-04-01 13:48:48 +01:00
diegosouzapw
3e62300f9c docs: update root files to v3.4.2 state, cleanup obsolete files
- SECURITY.md: supported versions 3.4.x/3.0.x, MCP scopes (10),
  audit trail, Zod v4 validation, TLS/CLI fingerprint
- CONTRIBUTING.md: Node >=18<24, port 20128, project structure
  (21 DB modules, 25 MCP tools, memory/skills/electron), 122 test files
- README.md: 60+ providers, 25 MCP tools, 10 scopes, 9 strategies
- .dockerignore: expanded exclusions (tests, docs, electron, *.tgz)
- .npmignore: added llm.txt, bun.lock, tsconfig variants, subprojects
- .gitignore: _*/ dirs, docs/new-features, COVERAGE_PLAN allowlist

Deleted files:
- 20 README.*.md redirect stubs (consolidated in docs/i18n/)
- 4 scratch test files (test_exception/target_format/translator/out)
- restart.sh, validate-translation.sh (obsolete scripts)
- Moved COVERAGE_PLAN.md -> docs/COVERAGE_PLAN.md
2026-04-01 09:44:11 -03:00
diegosouzapw
49c9eaa6e1 Merge remote-tracking branch 'origin/release/v3.4.1' 2026-04-01 09:00:02 -03:00
diegosouzapw
58db8a838a Merge branch 'release/v3.4.0' into main 2026-04-01 08:59:49 -03:00
diegosouzapw
5509c65a6f Merge remote-tracking branch 'origin/only-4-copilot-869' into temp_merge_branch 2026-04-01 08:47:15 -03:00
diegosouzapw
fb3ba8bf92 chore: resolve merge conflicts with feature-antigravity 2026-04-01 08:47:05 -03:00
diegosouzapw
667bda6afb feat: complete memory and skills implementation for antigravity 2026-04-01 08:42:03 -03:00
R.D.
a381e9aa3b feat: pass tools through CC compatible bridge 2026-04-01 04:55:25 -04:00
R.D.
32dc3b36ab chore: rename CC compatible feature flag 2026-04-01 04:39:29 -04:00
R.D.
190f02a939 feat: add hidden Claude Code compatible provider 2026-04-01 04:35:16 -04:00
R.D.
aa2027f1b5 fix provider limits sync cadence 2026-04-01 02:24:53 -04:00
diegosouzapw
f665da9348 chore(release): prepare v3.4.2 integration branch 2026-04-01 02:51:49 -03:00
diegosouzapw
fdc2baab2b Merge PR #882 agents-docs-update into release/v3.4.2 2026-04-01 02:20:49 -03:00
diegosouzapw
f4fc0e17da Merge branch 'feat/memory-skill-injection-v2' into release/v3.4.2
# Conflicts:
#	src/app/(dashboard)/dashboard/settings/page.tsx
2026-04-01 02:20:40 -03:00
diegosouzapw
b5389cadc8 Merge PR #885 antigravity-audit into release/v3.4.2
# Conflicts:
#	open-sse/executors/antigravity.ts
2026-04-01 02:19:56 -03:00
diegosouzapw
3641869332 Merge branch 'gemini-cli-audit' into release/v3.4.2
# Conflicts:
#	open-sse/handlers/chatCore.ts
2026-04-01 02:19:14 -03:00
diegosouzapw
d570a55ce6 Merge PR #884 feat/search-mcp-tool into release/v3.4.2 2026-04-01 02:18:47 -03:00
diegosouzapw
fe77e05aff Merge PR #880 coder/log-rotation-clean-followup into release/v3.4.2 2026-04-01 02:18:38 -03:00
diegosouzapw
906ad8c7c1 Merge PR #881 feat/cache-page-dynamic-v2 into release/v3.4.2 2026-04-01 02:18:34 -03:00
diegosouzapw
e5d0a68d70 Merge branch 'feat/appearance-tab-whitelabel-v2' into release/v3.4.2 2026-04-01 02:18:27 -03:00
diegosouzapw
a17adfe366 Merge branch 'dev-rebased' into release/v3.4.2 2026-04-01 02:18:23 -03:00
Chris Staley
ff158282e7 fix: remove non-functional Antigravity image models from imageRegistry
The models gemini-2.5-flash-preview-image-generation and
gemini-3.1-flash-image-preview were surfacing in the model catalog
via getAllImageModels() from imageRegistry.ts, not from the live
upstream API. Removed them from the image provider registry.
2026-03-31 23:13:56 -06:00
Chris Staley
5df8abcddf fix: cap gemini-3.1-pro maxOutputTokens and filter live models
- Reduce maxOutputTokens from 131072 to 65535 for gemini-3.1-pro-high
  and gemini-3.1-pro-low, fixing 400 "invalid argument" errors from
  Open WebUI when no max_tokens is specified (upstream limit is 65535)
- Filter non-viable models (gemini-3.1-flash-image-preview,
  gemini-2.5-flash-preview-image-generation, gemini-3-pro-high/low)
  from the live upstream API response in /api/providers/[id]/models
2026-03-31 23:10:57 -06:00
Chris Staley
3fad8479ca fix: remove non-viable Antigravity models from registry and quota display
Models removed from available list (not usable via chat completions):
- gemini-3-pro-high/low — returns empty responses, quota unusable
- gemini-2.5-flash/flash-lite — quota always exhausted on free tier
- gemini-3.1-flash-image-preview — preview variant, not functional

Models hidden from quota UI (in addition to above):
- gemini-3-flash-agent — internal agent model
- gemini-3.1-flash-lite — not usable for chat

Kept gemini-3.1-flash-image in available models (confirmed working).
Removed dead gemini-3-pro from bare Pro ID normalization.
2026-03-31 22:47:40 -06:00
Chris Staley
c7da922383 fix: address PR review findings for Antigravity 429 cascade fix
- Standardize cooldown fallback to 2 min (COOLDOWN_MS.rateLimit) in both
  chatCore and auth.ts instead of inconsistent 60s/undefined
- Return 504 Gateway Timeout instead of 200 OK when SSE collection times
  out, with finish_reason "length" to signal incomplete response
2026-03-31 21:58:21 -06:00
Chris Staley
c4e2627b43 fix: prevent Antigravity 429 cascade from locking out entire connection
A 429 from one Antigravity model was marking the entire provider connection
as rate-limited, blocking ALL other models on the same account. This happened
in two places: chatCore's error classification (primary) and
markAccountUnavailable (secondary). Both now use model-only lockModel() for
passthrough providers instead of connection-wide rateLimitedUntil.

Also adds:
- Bare Pro model ID normalization (gemini-3-pro → gemini-3-pro-low)
  matching OpenClaw convention
- Internal model exclusion list for quota display, matching CLIProxyAPI
2026-03-31 21:51:02 -06:00
diegosouzapw
60968a926f fix: implement missing memory and skills api routes, wire MCP tools, fix migration numbers 2026-04-01 00:34:06 -03:00
diegosouzapw
93001377bf fix: enforce strict SSRF IP range filtering and block loopback ::1 2026-04-01 00:24:21 -03:00
oyi77
b912116a2f fix(cache): resolve code review issues (namespace, unused props) 2026-04-01 09:35:19 +07:00
oyi77
5899b0f1e4 fix: add missing yazl dependency for build 2026-04-01 09:26:37 +07:00
oyi77
e6e54822f5 feat: add Memory & Skill Injection from Proxy (Network Level)
Implements transparent memory and skill injection at the proxy layer,
enabling AI agents connecting through OmniRoute to automatically inherit
memory and tool capabilities without client-side code changes.

Memory System:
- SQLite-backed memory store with 4 types: factual, episodic, procedural, semantic
- Token budget retrieval with configurable max tokens (default 2000)
- Memory injection into chat requests (system message + message prefix)
- Memory fact extraction from responses
- Dashboard page: /dashboard/memory
- MCP tools: omniroute_memory_search, omniroute_memory_add, omniroute_memory_clear

Skills System:
- Skill registry with semver resolution (^, ~, >=, etc.)
- Docker sandbox runner with resource constraints (CPU 100ms, RAM 256MB)
- Skill executor with timeout handling
- Built-in skills: file_read, file_write, http_request, web_search, eval_code, execute_command
- Skill schema injection for OpenAI, Claude, Gemini formats
- Tool call interception and execution
- Dashboard page: /dashboard/skills
- MCP tools: omniroute_skills_list, omniroute_skills_enable, omniroute_skills_execute

Advanced Features:
- Browser automation skill (Playwright-based)
- A2A memory-aware routing skill
- Hybrid execution mode (direct/sandbox/auto-upgrade)
- Custom skill registration API
- Integration tests
- Memory caching layer
- Memory summarization
- Performance benchmarks

Resolves: GitHub Issue #812
2026-04-01 09:26:37 +07:00
zenobit
db5adef813 chore(ci): improve and show CI summary 2026-04-01 04:13:08 +02:00
Chris Staley
adb8127a30 fix: Antigravity model access — registry, 404 lockout, and non-streaming requests
- Update model list to match CLIProxyAPI filtered models (remove stale
  gemini-2.5-pro, claude-sonnet-4-5, claude-sonnet-4, gemini-2.0-flash;
  sort alphabetically)
- Extend 404 model-only lockout to passthrough providers so one missing
  model doesn't lock out the entire Antigravity connection
- Always use streaming upstream endpoint (generateContent causes upstream
  400 for some models that internally convert to OpenAI format with
  stream_options); collect SSE into JSON for non-streaming clients
- Fix unlimited quota models showing 0% by checking q.unlimited before
  recalculating percentage
2026-03-31 20:09:38 -06:00
kang-heewon
a4d2b8862b feat(mcp): add omniroute_web_search tool with execute:search scope
- Add execute:search scope to MCP_SCOPE_LIST, MCP_TOOL_SCOPES, agent preset
- Add webSearchInput/webSearchOutput Zod schemas (query, max_results, search_type, provider)
- Add handleWebSearch handler wrapping POST /v1/search
- Add unit tests (3 test cases, 12 tests pass)

Essential tool (Phase 1) for MCP clients to perform web search via Search Gateway.
2026-04-01 11:00:12 +09:00
zenobit
ad153c226e fix(ci): add missing dependencies for build
- prop-types: required by 12 component files using PropTypes
- js-yaml: required by openapi spec route

These dependencies were missing from package.json causing build failures.
2026-04-01 03:52:45 +02:00
zenobit
39ce0af4bf fix: runtime platform checks for machineId to avoid SWC dead-code elimination 2026-04-01 03:52:45 +02:00
zenobit
2e132e47e4 fix: resolve typecheck error and add missing hi translations 2026-04-01 03:52:45 +02:00
zenobit
8b2cd11e9f fix(i18n): treat untranslated as soft warning, not failure 2026-04-01 03:52:45 +02:00
zenobit
a69f7c9dfd fix(i18n): add missing cache and settings keys to all translations 2026-04-01 03:52:45 +02:00
zenobit
671ac562e7 fix(chatCore): remove explicit any from comment to pass t11 budget check 2026-04-01 03:52:45 +02:00
zenobit
89cb4bbb8c Apply suggestions from code review
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2026-04-01 03:52:45 +02:00
zenobit
a91f8c4d51 fix(ci): i18n validation 2026-04-01 03:52:45 +02:00
zenobit
8ea614266c fix(validation): accept .safeParse() as body validation
The check-route-validation script now accepts both validateBody()
and .safeParse() as valid body validation methods. This fixes false
positives for routes using Zod schemas with safeParse().
2026-04-01 03:52:45 +02:00
zenobit
1c0ba24e48 fix(ci): Update action/setup-python@v6.2.0 2026-04-01 03:52:45 +02:00