Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
7c627ff
fix(auth/antigravity): request aicode OAuth scope
SomSamantray Oct 3, 2026
d9a688e
chore(meta): match Muse Code 1.4.14 client headers
Oct 30, 2026
b147b8d
fix(meta): include Muse namespace in tool-bearing requests
Oct 30, 2026
cc4b994
feat(claude): add opt-in visible Codex commentary with preserved replay
luispater Oct 31, 2026
4c46f0a
fix(gemini): strip empty part objects from systemInstruction (#7136)
sususu98 Oct 31, 2026
a8dbeba
feat(pluginhost): allow plugins to register multiple OAuth login entries
luispater Oct 31, 2026
f42f587
fix(antigravity): strip empty part objects from Gemini systemInstruct…
luispater Oct 31, 2026
234217d
fix(antigravity): discard excess functionResponse parts per turn in f…
sususu98 Oct 31, 2026
250d598
perf(antigravity): make selectGroupResponses O(N+M) and deduplicate s…
sususu98 Oct 31, 2026
7d2959a
fix(home): keep the release flusher idle when nothing is pending
Oct 31, 2026
f0ddc38
fix(xai): support Grok Imagine Video 1.5 Lite
gabrielrinaldi Oct 31, 2026
95f125f
fix(auth): skip automatic Codex refresh without renewal credentials
LTbinglingfeng Oct 31, 2026
7b4c64b
fix(auth): preserve disabled credential refresh backoff
LTbinglingfeng Oct 31, 2026
c69cdd9
fix(xai): preserve Lite resolution and catalog fallback
gabrielrinaldi Oct 31, 2026
d00267c
fix(auth): treat Anthropic credit balance 400 errors as payment required
luispater Nov 1, 2026
b63322b
fix(registry): preserve explicit thinkingLevel on Antigravity Claude …
luispater Nov 1, 2026
bf83431
feat(config): add per-api-key connection-pool settings
sususu98 Oct 29, 2026
34a01b7
feat(proxy): pool upstream transports per api key
sususu98 Oct 29, 2026
9f0c9ff
docs(config): document per-api-key connection pools
sususu98 Oct 29, 2026
638f5f5
fix(proxy): honour per-key pool opt-in and isolate pools per runtime
sususu98 Oct 29, 2026
6c231c2
fix(proxy): lazily allocate uTLS pools and close fenced transports
sususu98 Oct 29, 2026
893958e
fix(proxy): decline pooling when http.DefaultTransport is not *http.T…
sususu98 Oct 31, 2026
fd02b72
fix(proxy): stamp keepalive on uTLS dialers, rebind stale compat exec…
sususu98 Nov 1, 2026
f692d93
Merge pull request #7101 from sususu98/feat/proxy-connection-pool
sususu98 Nov 1, 2026
5d8fddd
chore(meta): match Muse Code 1.4.14 client headers
Oct 30, 2026
bb6e1aa
fix(meta): include Muse namespace in tool-bearing requests
Oct 30, 2026
ecbaa6c
fix(devin): route compound fast thinking levels to upstream fast vari…
luispater Nov 1, 2026
a96e640
fix(auth): keep sign-in-required Codex credentials quarantined across…
luispater Nov 1, 2026
675debc
Merge pull request #7141 from Ruanyuxi1337/fix/release-flusher-idle
luispater Nov 1, 2026
41c03b7
fix(pluginhost): normalize same-format plugin executor streams throug…
Rick7C2 Nov 1, 2026
9037d54
fix(openai): drop output-only content_token_count from replayed respo…
luispater Nov 1, 2026
d65840f
fix(xai): append identity hash to credential filenames to prevent col…
luispater Nov 1, 2026
9513c2d
docs(auth): explain Codex refresh token key requirement
LTbinglingfeng Nov 1, 2026
a21814e
docs(config): note connection-pool pruning boundaries on save
sususu98 Nov 1, 2026
8a82bed
fix(helps): release TransportCache mutex on builder panic and retire …
sususu98 Nov 1, 2026
3698b15
fix(pluginhost): scope model execution streams to the owning plugin a…
sususu98 Nov 1, 2026
08437a6
fix(codex): keep shortened gateway mcp tool names readable in claude …
luispater Nov 1, 2026
aca8dfe
Merge pull request #7154
luispater Nov 1, 2026
f7331b5
fix(pluginhost): deframe same-format plugin executor streams and gate…
luispater Nov 1, 2026
8643ea5
fix(config): include connection-pool settings in credential deduplica…
sususu98 Nov 1, 2026
a579504
fix(api/middleware): finalize request logging on handler panic
sususu98 Nov 1, 2026
ce39bc6
feat(pluginstore): support plugin locales normalization and managemen…
luispater Nov 1, 2026
24f9744
Merge pull request #7143 from router-for-me/fix/codex-no-refresh-toke…
luispater Nov 1, 2026
53ff2f9
feat(pluginhost): expose per-entry name and logo for multi-entry OAut…
luispater Nov 1, 2026
ec06c3c
fix(translator): normalize numeric schema constraints when converting…
luispater Nov 1, 2026
4448b96
Merge pull request #7113 from zoidypuh/pr/muse-1414-client-headers
luispater Nov 1, 2026
00b7677
fix(translator): preserve developer roles in responses to chat comple…
luispater Nov 1, 2026
3ac3849
fix(gemini): preserve parallel responses tool output batches across d…
luispater Nov 1, 2026
7cad1cb
Merge pull request #7142 from gabrielrinaldi/fix/grok-video-1.5-lite
luispater Nov 1, 2026
c888ff7
fix(translator): normalize omitted and function roles in Gemini ingre…
sususu98 Nov 2, 2026
06ec5ea
Merge pull request #7187 from sususu98/fix/gemini-omitted-content-rol…
sususu98 Nov 2, 2026
32e3fd5
Merge pull request #7164 from sususu98/fix/transport-cache-panic-unlo…
sususu98 Nov 2, 2026
ef04e83
Merge pull request #7165 from sususu98/fix/credential-dedup-connectio…
sususu98 Nov 2, 2026
f31d60a
Merge pull request #7166 from sususu98/fix/request-logging-finalize-o…
sususu98 Nov 2, 2026
533687e
Merge pull request #6315 from SomSamantray/fix/antigravity-aicode-scope
sususu98 Nov 2, 2026
d96b194
fix(pluginhost): reject model stream registration after concurrent te…
sususu98 Nov 2, 2026
d7af371
Merge pull request #7167 from sususu98/fix/pluginhost-model-stream-ow…
sususu98 Nov 2, 2026
b1a3e50
docs: remove OpenLux sponsorship from READMEs
LTbinglingfeng Nov 2, 2026
be2563f
docs: update Xcode sponsorship copy
LTbinglingfeng Nov 2, 2026
6e6afab
refactor: migrate gjson, sjson, and base64 to MoeForge/moego
luispater Nov 2, 2026
e582706
fix(auth): prevent auto-refresh spin for disabled credentials with re…
luispater Nov 2, 2026
0130d6f
fix(claude): keep Fable-only 429 rejections model-scoped when 5h head…
luispater Nov 3, 2026
e25b7da
fix(devin): sanitize embedded exec tool phrases and stop retrying req…
luispater Nov 3, 2026
24b0454
fix(antigravity): map safety and filter finish reasons to refusal in …
luispater Nov 3, 2026
d389977
fix(management): honor targeted OAuth re-login across all built-in pr…
luispater Nov 3, 2026
a1eeb60
fix(codex): disable supports_image_detail_original for non-codex cata…
luispater Nov 3, 2026
9acf81d
fix(claude): drop replayed web search citations when search results a…
luispater Nov 3, 2026
dde469d
fix(pluginhost): isolate unix plugin dlopen crashes with a preflight …
luispater Nov 3, 2026
54778bd
fix(agents): enforce usage of moego libraries for JSON and Base64 ope…
luispater Nov 3, 2026
6d4102f
feat(config): support native-entrypoints configuration for Claude Cod…
luispater Nov 3, 2026
04208ef
fix(pluginhost): preserve disabled auth state across plugin refreshes
luispater Nov 3, 2026
be86430
fix(translator/gemini): nest Claude tool_result images inside functio…
luispater Nov 3, 2026
b3442f6
fix(devin): keep sealed reasoning items sent back via the Responses API
maomaocun Nov 3, 2026
193debb
Merge pull request #7229 from maomaocun/fix/devin-responses-reasoning…
luispater Nov 3, 2026
cfa25b4
refactor(translator): build Devin thought step with a single ojson.Doc
luispater Nov 3, 2026
01b24f1
fix(codex): preserve and forward max_output_tokens across request tra…
luispater Nov 3, 2026
6d7e6a3
feat(usage): extract cached image/audio and interactions modality tokens
sususu98 Nov 3, 2026
fb30a9e
fix(thinking): prefer Claude mid-conversation effort directives in us…
luispater Nov 3, 2026
061ffe6
fix(devin): honor Claude mid-conversation effort directives when sele…
luispater Nov 3, 2026
606e667
fix(codex): sanitize invalid characters in Codex input item IDs
luispater Nov 3, 2026
6e10359
fix(pluginhost): abort hot reload on quiesce failure and coordinate u…
luispater Nov 3, 2026
196ca83
Merge pull request #7231 from sususu98/feat/usage-cached-modality-tokens
sususu98 Nov 4, 2026
f72f8bf
feat(antigravity): bump fallback version to 2.29.0 and add changelist…
sususu98 Nov 4, 2026
f3762c6
feat(auth): extract Antigravity model discovery to sdk/auth
sususu98 Nov 4, 2026
f49bd5d
refactor(auth): route Antigravity model JSON operations through ojson
sususu98 Nov 4, 2026
cbf0188
Merge pull request #7238 from sususu98/feat/antigravity-models-discov…
sususu98 Nov 4, 2026
0e02765
fix(auth): clone parsed model IDs and preserve nil unknown catalogs
sususu98 Nov 4, 2026
c3938b7
fix(logging,clienterror): classify mid-stream cyber blocks as 400 and…
sususu98 Nov 4, 2026
0a94b2a
fix(logging,executor): preserve Claude Fast classified error status a…
sususu98 Nov 4, 2026
69a032d
perf,fix(logging,websocket): avoid 200 OK body buffering and synchron…
sususu98 Nov 4, 2026
03a8743
fix(executor): classify non-stream Claude policy refusals as 400 requ…
sususu98 Nov 4, 2026
508ac2b
fix(executor,handlers): require stream-level evidence for Gemini filt…
sususu98 Nov 4, 2026
78a9cc9
chore(deps): update github.com/router-for-me/moego to v0.1.2
luispater Nov 4, 2026
ec14dc4
feat(kvstore): add local bbolt key-value store and integration routing
luispater Nov 4, 2026
d57270f
fix(executor): support Codex remote compaction v2 on openai-compatibl…
luispater Nov 4, 2026
e6e5708
feat(claude): persist cloaked session date pins in persistent KV store
luispater Nov 4, 2026
f208c90
fix(handlers): record TTFT for direct plugin executor routes
luispater Nov 4, 2026
7a7d37e
feat(codex): add support for gpt-image-2.6 models
Nov 5, 2026
010de19
Merge pull request #7262 from Nciae-Zyh/feat/codex-gpt-image-26
sususu98 Nov 5, 2026
8c9a785
fix(openai): bridge client tool_search in Chat Completions Responses …
luispater Nov 5, 2026
6044c5d
fix(openai): translate thinking content-part arrays in Claude respons…
luispater Nov 5, 2026
be69162
fix(executor,logging): preserve Antigravity usage evidence, sparse Cl…
sususu98 Nov 5, 2026
6897eeb
Merge pull request #7242 from sususu98/fix/cyber-block-request-fault-…
sususu98 Nov 5, 2026
dfe8b18
fix(codex,auth): bypass SIWC for OpenAI image requests and route dire…
sususu98 Nov 5, 2026
b5e6027
fix(openai): expose terminal 429 error frames on responses websocket
luispater Nov 5, 2026
62c58a7
Merge pull request #7265 from sususu98/fix/codex-openai-image-bypass-…
sususu98 Nov 5, 2026
585f97d
fix(auth): pass context and headers to availableAuthsForSelector in H…
sususu98 Nov 5, 2026
f2e255f
fix(usage): clear consumed queue slot in usage manager dispatcher
luispater Nov 5, 2026
8fb6032
fix(codex): handle Responses-Lite hosted image_generation compatibility
luispater Nov 5, 2026
a3c84a3
feat(devin): update devin_models.json with swe-2-flash, nemotron-3-5-…
sususu98 Nov 5, 2026
1c53721
fix(auth): keep count_tokens 501 and unsupported capability responses…
luispater Nov 5, 2026
c2f402b
fix(meta): send X-Tbh-Contributor-Mode header only for contributor mo…
luispater Nov 5, 2026
c1842be
feat(models): add gpt-6-chat-thinking to registries
luispater Nov 5, 2026
55c05f7
fix(claude): correct gemini tool result and signature translation
luispater Nov 6, 2026
9be4813
fix(codex): normalize small claude output budgets
luispater Nov 6, 2026
e458999
fix(claude): show cooldown retry time in error messages
luispater Nov 6, 2026
1d4e054
fix(auth): preserve terminal responses across execution paths
GavinKung Nov 6, 2026
2c16b1a
Merge pull request #7294 from router-for-me/fix/home-terminal-request…
GavinKung Nov 6, 2026
fb77445
fix(executor): support Codex remote compaction v2 on native Devin route
luispater Nov 6, 2026
d1e5cc6
fix(codex): reject unsupported hosted image requests
GavinKung Nov 6, 2026
e5e6ad1
Merge pull request #7295 from router-for-me/fix/codex-hosted-image-re…
GavinKung Nov 6, 2026
566c600
chore: merge upstream/main through e5e6ad1e
jiroamato Nov 7, 2026
c21f29d
test: fix Windows cleanup races and flaky timing in upstream tests
jiroamato Nov 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ go build -o test-output ./cmd/server && rm test-output # Verify compile (REQUIRE
- As a rule, do not make standalone changes to `internal/translator/`. You may modify it only as part of broader changes elsewhere.
- If a task requires changing only `internal/translator/`, run `gh repo view --json viewerPermission -q .viewerPermission` to confirm you have `WRITE`, `MAINTAIN`, or `ADMIN`. If you do, you may proceed; otherwise, file a GitHub issue including the goal, rationale, and the intended implementation code, then stop further work.
- `internal/runtime/executor/` should contain executors and their unit tests only. Place any helper/supporting files under `internal/runtime/executor/helps/`.
- Do not use `github.com/tidwall/gjson`, `github.com/tidwall/sjson`, or Go's standard `encoding/base64`. Always use `github.com/MoeForge/moego/ojson` and `github.com/MoeForge/moego/base64` for all JSON and Base64 operations. All JSON write operations (`Set`, `SetRaw`, `Delete`, etc.) MUST be performed on `*ojson.Doc` (`ojson.NewDoc` / `ojson.NewDocString`), passing `*ojson.Doc` across mutation stages and serializing only once at the final exit (`doc.Bytes()` / `doc.String()`), rather than mutating raw `[]byte` or `string` payloads directly.
- Payload configuration MUST be the final semantic barrier before sending requests in every executor, including streaming, WebSocket, continuation, retry/fallback, image, and token-count paths where applicable. Complete all built-in payload translation, normalization, injection, and cleanup first, then evaluate and apply user payload rules exactly once to the final business payload. No subsequent logic may overwrite configured values or restore filtered fields. Only necessary transport framing, serialization, signature calculation, and read-only validation may follow without changing business payload semantics. Add regression tests when introducing or changing request-building paths to enforce this ordering.
- Follow `gofmt`; keep imports goimports-style; wrap errors with context where helpful
- Do not use `log.Fatal`/`log.Fatalf` (terminates the process); prefer returning errors and logging via logrus
Expand Down
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -191,10 +191,6 @@ PackyCode provides special discounts for our software users: register using <a h
<td>PatewayAI is an API relay service provider for experienced AI developers, with full support for the Claude and Codex model families. All models come from high-quality official channels, with no dilution or counterfeiting, and transparent, verifiable billing details. Economy mode starts at just 5% of the official price. Register through <a href="https://pateway.ai/?ch=jjvdb">this link</a> to receive trial credits and participate in occasional promotions for free credits. The platform also supports enterprise-grade concurrency, a dedicated management dashboard, formal contracts and invoices, and two-way referral rewards of up to &#36;150.</td>
</tr>
<tr>
<td width="180"><a href="https://www.openlux.ai/register?channel=c_6axb1q5n"><img src="./assets/openlux.png" alt="OpenLux" width="150"></a></td>
<td>Thank you to OpenLux for sponsoring this project!<br><br>OpenLux is an all-in-one AI platform for businesses, bringing together leading AI models from major providers worldwide. With fast, reliable service and responsive technical support, OpenLux offers base pricing for Claude, OpenAI, and Gemini models as low as 8.82%, 4%, and 8% of official rates, respectively.<br><br>Exclusive offer for CLI Proxy API users: Sign up through our referral link and enjoy up to 7.5% off credit top-ups!<br><br>Get started with OpenLux → <a href="https://www.openlux.ai/register?channel=c_6axb1q5n">https://www.openlux.ai/register?channel=c_6axb1q5n</a></td>
</tr>
<tr>
<td width="180"><a href="https://modelflare.dev/sign-up?utm_source=github&utm_campaign=cliproxyapi"><img src="./assets/modelflare.png" alt="Modelflare" width="150"></a></td>
<td>Thanks to Modelflare for sponsoring this project! Modelflare: Full strength, stable, nothing watered down. Global SOTA models at a lower cost. Operated by US-based Havenbyte LLC, Modelflare supports GPT, Claude, Gemini, Grok, and other leading models through common compatible protocols, plus 40+ image and video models. Cache compensation is a highlight: selected OpenAI groups (price-first, stable, and premium) guarantee daily cache hit rates of 65%, 75%, or 85%, and if eligible requests fall short, Modelflare refunds the difference, visible on the usage dashboard after settlement. Special offers: a single top-up of US&#36;20 unlocks the GPT discount group at a 0.015x price multiplier, and a single top-up of US&#36;50 unlocks the Claude discount group at a 0.03x multiplier. Register via <a href="https://modelflare.dev/sign-up?utm_source=github&utm_campaign=cliproxyapi">this exclusive link</a> to get started.</td>
</tr>
Expand All @@ -204,8 +200,14 @@ PackyCode provides special discounts for our software users: register using <a h
</tr>
<tr>
<td width="180"><a href="https://xcode.best/register?aff=OuDv"><img src="./assets/xcode.gif" alt="Xcode" width="150"></a></td>
<td>This AI model transfer service provider offers immediate refunds; any user can obtain a free invoice; it can be done for both corporate and individual clients; all major models are available. The customer service is always online and ready to respond to your requests; just let us know what you need and we'll take care of it!!!
<br><br>Xcode VIP access:<a href="https://xcode.best/register?aff=OuDv">https://xcode.best</a></td>
<td>
🥚 <b>[Freebie Alert!] Register & submit a ticket with code to grab $5 free credit + 15% OFF first top-up!</b><br>
🚀 <b>More than just API routing — an all-in-one Web workspace:</b> Enjoy Web chat, AI image generation, video creation, and automated workflows right out of the box without any frontend setup.<br>
⚡ <b>All mainstream models supported:</b> High-speed routing for Claude, GPT, Gemini, DeepSeek, and more.<br>
🛡️ <b>Reliable guarantees:</b> Hassle-free refunds | Official invoicing | B2B & individual billing | High-availability customer support ready to help!<br><br>
👉 Xcode VIP Portal: <a href="https://xcode.best/register?aff=OuDv">https://xcode.best</a><br>
💬 Ticket Code: <code>CLIProxyAPI</code> (Submit a ticket to claim your credits instantly)
</td>
</tr>
<tr>
<td width="180"><a href="https://x.com/chenju_ai"><img src="./assets/chenju.png" alt="Chenju" width="150"></a></td>
Expand Down Expand Up @@ -237,6 +239,8 @@ PackyCode provides special discounts for our software users: register using <a h

CLIProxyAPI Guides: [https://help.router-for.me/](https://help.router-for.me/)

[Claude Code with a Codex backend](examples/claude-code-codex/README.md): optional visible progress, classifier routing, image-tool pass-through, and latency diagnostics.

## Management API

see [MANAGEMENT_API.md](https://help.router-for.me/management/api)
Expand Down
13 changes: 8 additions & 5 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,6 @@ PackyCode 为本软件用户提供了特别优惠:使用<a href="https://www.p
<td>PatewayAI 是一家面向资深 AI 开发者的 API 中继服务商,完整支持 Claude 与 Codex 系列模型。所有模型均来自官方高质量渠道,绝无稀释、绝无伪造,计费明细透明可查。经济模式低至 0.5 折,通过<a href="https://pateway.ai/?ch=jjvdb">此链接</a>注册即可获得试用额度,还可参与不定时营销活动领取免费额度。平台同时支持企业级并发、专属管理后台、正式合同与发票,并提供最高 150 美元的双向推荐奖励。</td>
</tr>
<tr>
<td width="180"><a href="https://www.openlux.ai/register?channel=c_6axb1q5n"><img src="./assets/openlux.png" alt="OpenLux" width="150"></a></td>
<td>感谢 OpenLux 对本项目的赞助!Openlux是一个面向企业的一站式 AI 聚合平台,汇集全球各大厂商主流大模型,平台提供高效、稳定的服务与及时的技术支持。Claude、OpenAI、Gemini 系列模型基准折扣分别低至官方的 0.882 折、0.4 折和 0.8 折。<br><br>CLI Proxy API 用户还可享受专属福利:通过专属链接注册,充值最高可享 7.5% 优惠!<br><br>立即体验:<a href="https://www.openlux.ai/register?channel=c_6axb1q5n">https://www.openlux.ai/register?channel=c_6axb1q5n</a></td>
</tr>
<tr>
<td width="180"><a href="https://modelflare.dev/sign-up?utm_source=github&utm_campaign=cliproxyapi"><img src="./assets/modelflare.png" alt="Modelflare" width="150"></a></td>
<td>感谢 Modelflare 赞助本项目!Modelflare:满血稳定不掺水,低成本享受全球 SOTA 模型。站点由美国 LLC 主体 Havenbyte LLC 运营,支持 GPT、Claude、Gemini、Grok 等主流模型和常用兼容协议,还支持 40 多种图片和视频模型。缓存补偿是一大亮点:部分 OpenAI 价格优先、稳定和高级分组提供每日 65%、75%、85% 的缓存命中率保障,符合条件的请求没达到目标的,平台补偿差额,结算后可在用量看板查看。特惠活动:单笔充值 US&#36;20 即可解锁 0.015 倍价格倍率的 GPT 特惠分组,单笔充值 US&#36;50 即可解锁 0.03 倍价格倍率的 Claude 特惠分组。通过<a href="https://modelflare.dev/sign-up?utm_source=github&utm_campaign=cliproxyapi">专属链接</a>注册即可参与。</td>
</tr>
Expand All @@ -105,7 +101,14 @@ PackyCode 为本软件用户提供了特别优惠:使用<a href="https://www.p
</tr>
<tr>
<td width="180"><a href="https://xcode.best/register?aff=OuDv"><img src="./assets/xcode.gif" alt="Xcode" width="150"></a></td>
<td>这个 AI 模型中转服务商可以随时退款;任意用户可免费开票;对公对私都能做;主流模型全都有。客服长时间在线等候您的差遣;有事儿您吩咐,主打一个听劝!<br><br>Xcode贵宾入口:<a href="https://xcode.best/register?aff=OuDv">https://xcode.best</a></td>
<td>
🥚 <b>【免费领鸡蛋!】注册提工单报暗号,白嫖 $5 额度 + 首充 85 折!</b><br>
🚀 <b>不只是 API 中转,更是全能 Web 工作台:</b>无需自建前端,网页直接用对话、AI绘图、视频生成、自动化工作流。<br>
⚡ <b>全主流覆盖:</b>Claude、GPT、Gemini、DeepSeek 等顶尖模型极速聚合。<br>
🛡️ <b>服务保障:</b>随时退款 | 免费开票 | 对公对私 | 客服长时在线,主打一个听劝!<br><br>
👉 Xcode贵宾入口:<a href="https://xcode.best/register?aff=OuDv">https://xcode.best/register?aff=OuDv</a><br>
💬 工单暗号:<code>CLIProxyAPI</code>(提交工单即可直接到账)
</td>
</tr>
<tr>
<td width="180"><a href="https://x.com/chenju_ai"><img src="./assets/chenju.png" alt="陈局" width="150"></a></td>
Expand Down
13 changes: 8 additions & 5 deletions README_JA.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,6 @@ PackyCodeは当ソフトウェアのユーザーに特別割引を提供して
<td>PatewayAI は、経験豊富な AI 開発者向けの API リレーサービスプロバイダーで、Claude および Codex シリーズのモデルを完全にサポートしています。すべてのモデルは高品質な公式チャネルから提供され、希釈や偽装は一切なく、課金明細も透明で確認可能です。エコノミーモードは公式価格のわずか5%から利用できます。<a href="https://pateway.ai/?ch=jjvdb">こちらのリンク</a>から登録するとトライアルクレジットを受け取れるほか、不定期のキャンペーンで無料クレジットを獲得できます。また、エンタープライズ級の同時接続、専用管理ダッシュボード、正式な契約書と請求書に対応し、双方に最大150米ドルが付与される紹介特典も提供しています。</td>
</tr>
<tr>
<td width="180"><a href="https://www.openlux.ai/register?channel=c_6axb1q5n"><img src="./assets/openlux.png" alt="OpenLux" width="150"></a></td>
<td>OpenLux による本プロジェクトへのご支援に感謝します!<br><br>OpenLux は、世界の主要プロバイダーが提供する主流の大規模 AI モデルを集約した、企業向けのワンストップ AI プラットフォームです。迅速で安定したサービスと適時の技術サポートを提供しています。Claude、OpenAI、Gemini シリーズのモデルの基本料金は、それぞれ公式料金の8.82%、4%、8%からご利用いただけます。<br><br>CLI Proxy API ユーザー限定特典:専用リンクから登録すると、チャージ時に最大7.5%の割引を受けられます!<br><br>今すぐ OpenLux を試す → <a href="https://www.openlux.ai/register?channel=c_6axb1q5n">https://www.openlux.ai/register?channel=c_6axb1q5n</a></td>
</tr>
<tr>
<td width="180"><a href="https://modelflare.dev/sign-up?utm_source=github&utm_campaign=cliproxyapi"><img src="./assets/modelflare.png" alt="Modelflare" width="150"></a></td>
<td>Modelflare による本プロジェクトへのご支援に感謝します!Modelflare:フルスペックで安定、水増しなし。世界の SOTA モデルを低コストで利用できます。米国法人 Havenbyte LLC が運営し、GPT、Claude、Gemini、Grok などの主要モデルと一般的な互換プロトコルに対応しているほか、40 種類以上の画像・動画モデルもサポートしています。キャッシュ補償が大きな特長です:一部の OpenAI 価格優先・安定・プレミアムグループでは、1 日あたり 65%、75%、85% のキャッシュヒット率を保証し、対象リクエストが目標に達しなかった場合は差額を補償します。精算後に使用量ダッシュボードで確認できます。特別キャンペーン:1 回 US&#36;20 のチャージで価格倍率 0.015 倍の GPT 特別グループが、1 回 US&#36;50 のチャージで価格倍率 0.03 倍の Claude 特別グループが解放されます。<a href="https://modelflare.dev/sign-up?utm_source=github&utm_campaign=cliproxyapi">専用リンク</a>から登録してご参加ください。</td>
</tr>
Expand All @@ -105,7 +101,14 @@ PackyCodeは当ソフトウェアのユーザーに特別割引を提供して
</tr>
<tr>
<td width="180"><a href="https://xcode.best/register?aff=OuDv"><img src="./assets/xcode.gif" alt="Xcode" width="150"></a></td>
<td>こちらのAIモデル中转サービスはいつでも返金可能で、どのユーザーも無料でインボイスを発行できます。法人のご利用も個人のご利用もどちらも対応可能で、主要なモデルはすべて揃っています。カスタマーサポートは長時間オンラインで皆様のご指示をお待ちしております。何かございましたらお気軽にご指示ください。お客様のご意見をしっかり取り入れるのがモットーです!!!<br><br>Xcode VIPエントランス→ <a href="https://xcode.best/register?aff=OuDv">https://xcode.best</a></td>
<td>
🥚 <b>【タダポチ案件!】登録&合言葉で $5 相当の無料クレジット + 初回チャージ 15% OFF!</b><br>
🚀 <b>単なる API 中継ではなく、オールインワンの Web ワークスペース:</b> フロントエンド構築不要で、Web チャット・AI 画像生成・動画生成・自動ワークフローがブラウザ上ですぐ使えます。<br>
⚡ <b>主要モデル完全網羅:</b> Claude、GPT、Gemini、DeepSeek などの最先端モデルを高速集約。<br>
🛡️ <b>安心のサポート体制:</b> いつでも返金可能 | 請求書・領収書対応 | 法人・個人問わず利用可能 | ユーザーの声を大切にする充実のサポート!<br><br>
👉 Xcode VIP 専用リンク:<a href="https://xcode.best/register?aff=OuDv">https://xcode.best</a><br>
💬 チケット申請用合言葉:<code>CLIProxyAPI</code>(チケット送信で即時付与)
</td>
</tr>
<tr>
<td width="180"><a href="https://x.com/chenju_ai"><img src="./assets/chenju.png" alt="Chenju" width="150"></a></td>
Expand Down
8 changes: 4 additions & 4 deletions cmd/fetch_antigravity_models/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"strings"
"time"

"github.com/MoeForge/moego/ojson"
"github.com/router-for-me/CLIProxyAPI/v8/internal/config"
"github.com/router-for-me/CLIProxyAPI/v8/internal/logging"
"github.com/router-for-me/CLIProxyAPI/v8/internal/misc"
Expand All @@ -34,7 +35,6 @@ import (
coreauth "github.com/router-for-me/CLIProxyAPI/v8/sdk/cliproxy/auth"
"github.com/router-for-me/CLIProxyAPI/v8/sdk/proxyutil"
log "github.com/sirupsen/logrus"
"github.com/tidwall/gjson"
)

const (
Expand Down Expand Up @@ -279,15 +279,15 @@ func fetchModelsFromBaseURLs(ctx context.Context, auth *coreauth.Auth, baseURLs
continue
}

result := gjson.GetBytes(bodyBytes, "models")
result := ojson.GetBytesNoCopy(bodyBytes, "models")
if !result.Exists() {
continue
}

var models []modelEntry

for originalName, modelData := range result.Map() {
modelID := strings.TrimSpace(originalName)
modelID := strings.Clone(strings.TrimSpace(originalName))
if modelID == "" {
continue
}
Expand All @@ -297,7 +297,7 @@ func fetchModelsFromBaseURLs(ctx context.Context, auth *coreauth.Auth, baseURLs
continue
}

displayName := modelData.Get("displayName").String()
displayName := strings.Clone(modelData.Get("displayName").String())
if displayName == "" {
displayName = modelID
}
Expand Down
Loading
Loading