Luis Pater
39dc4557c1
Merge pull request #2412 from sususu98/feat/signature-cache-toggle
...
feat: configurable signature cache toggle for Antigravity/Claude thinking blocks
2026-04-09 21:54:47 +08:00
ZTXBOSS666
30e94b6792
fix(antigravity): refine 429 handling and credits fallback
...
Includes: restore SDK docs under docs/; update antigravity executor credits tests; gofmt.
2026-04-09 21:48:32 +08:00
sususu98
cf249586a9
feat(antigravity): configurable signature cache with bypass-mode validation
...
Antigravity 的 Claude thinking signature 处理新增 cache/bypass 双模式,
并为 bypass 模式实现按 SIGNATURE-CHANNEL-SPEC.md 的签名校验。
新增 antigravity-signature-cache-enabled 配置项(默认 true):
- cache mode(true):使用服务端缓存的签名,行为与原有逻辑完全一致
- bypass mode(false):直接使用客户端提供的签名,经过校验和归一化
支持配置热重载,运行时可切换模式。
校验流程:
1. 剥离历史 cache-mode 的 'modelGroup#' 前缀(如 claude#Exxxx → Exxxx)
2. 首字符必须为 'E'(单层编码)或 'R'(双层编码),否则拒绝
3. R 开头:base64 解码 → 内层必须以 'E' 开头 → 继续单层校验
4. E 开头:base64 解码 → 首字节必须为 0x12(Claude protobuf 标识)
5. 所有合法签名归一化为 R 形式(双层 base64)发往 Antigravity 后端
非法签名处理策略:
- 非严格模式(默认):translator 静默丢弃无签名的 thinking block
- 严格模式(antigravity-signature-bypass-strict: true):
executor 层在请求发往上游前直接返回 HTTP 400
按 SIGNATURE-CHANNEL-SPEC.md 解析 Claude 签名的完整 protobuf 结构:
- Top-level Field 2(容器)→ Field 1(渠道块)
- 渠道块提取:channel_id (Field 1)、infrastructure (Field 2)、
model_text (Field 6)、field7 (Field 7)
- 计算 routing_class、infrastructure_class、schema_features
- 使用 google.golang.org/protobuf/encoding/protowire 解析
- resolveThinkingSignature 拆分为 resolveCacheModeSignature / resolveBypassModeSignature
- hasResolvedThinkingSignature:mode-aware 签名有效性判断
(cache: len>=50 via HasValidSignature,bypass: non-empty)
- validateAntigravityRequestSignatures:executor 预检,
仅在 bypass + strict 模式下拦截非法签名返回 400
- 响应侧签名缓存逻辑与 cache mode 集成
- Cache mode 行为完全保留:无 '#' 前缀的原生签名静默丢弃
2026-04-09 21:12:40 +08:00
Luis Pater
91e7591955
fix(executor): add transient 429 resource exhausted handling with retry logic
2026-04-08 02:48:53 +08:00
rensumo
8d5e470e1f
feat: dynamically fetch antigravity UA version from releases API
...
Fetch the latest version from the antigravity auto-updater releases
endpoint and cache it for 6 hours. Falls back to 1.21.9 if the API
is unreachable or returns unexpected data.
2026-04-04 14:52:59 +08:00
rensumo
f3ab8f4bc5
chore: update antigravity UA version to 1.21.9
2026-04-04 07:35:08 +08:00
Luis Pater
09e480036a
feat(auth): add support for managing custom headers in auth files
...
Closes #2457
2026-04-02 19:11:09 +08:00
Luis Pater
d2c7e4e96a
refactor(runtime): move executor utilities to helps package and update references
2026-04-01 03:08:20 +08:00
xixiwenxuanhe
a0bf33eca6
fix(antigravity): preserve fallback and honor config gate
2026-03-31 00:14:05 +08:00
xixiwenxuanhe
88dd9c715d
feat(antigravity): add AI credits quota fallback
2026-03-30 23:58:12 +08:00
Luis Pater
2bd646ad70
refactor: replace sjson.Set usage with sjson.SetBytes to optimize mutable JSON transformations
2026-03-19 17:58:54 +08:00
hkfires
dea3e74d35
feat(antigravity): refactor model handling and remove unused code
2026-03-12 09:24:45 +08:00
hkfires
9229708b6c
revert(executor): re-apply PR #1735 antigravity changes with cleanup
2026-03-02 19:30:32 +08:00
hkfires
b907d21851
revert(executor): revert antigravity_executor.go changes from PR #1735
2026-03-02 12:54:15 +08:00
Luis Pater
8aa2cce8c5
Merge PR #1735 into dev with conflict resolution and fixes
2026-03-02 03:22:51 +08:00
hkfires
134f41496d
fix(antigravity): update model configurations and add new models for Antigravity
2026-03-01 10:05:29 +08:00
maplelove
2baf35b3ef
fix(executor): bump antigravity UA to 1.19.6 and align image_gen payload
2026-02-27 14:09:37 +08:00
maplelove
846e75b893
feat(gemini): route gemini-3.1-flash-image identically to gemini-3-pro-image
2026-02-27 13:32:06 +08:00
maplelove
f3c164d345
feat(antigravity): update to v1.19.5 with new models and Claude 4-6 migration
2026-02-27 10:34:27 +08:00
maplelove
4040b1e766
Merge remote-tracking branch 'upstream/dev' into dev
...
# Conflicts:
# internal/runtime/executor/antigravity_executor.go
2026-02-27 10:29:50 +08:00
comalot
514ae341c8
fix(antigravity): deep copy cached model metadata
2026-02-24 20:14:01 +08:00
comalot
8ce07f38dd
fix(antigravity): keep primary model list and backfill empty auths
2026-02-24 16:16:44 +08:00
maplelove
8f97a5f77c
feat(registry): expose input modalities, token limits, and generation methods for Antigravity models
2026-02-23 13:33:51 +08:00
maplelove
8b5af2ab84
fix(executor): match real Antigravity OAuth UA, remove redundant header scrubbing on new requests
2026-02-22 23:20:12 +08:00
maplelove
d887716ebd
refactor(executor): switch HttpRequest to whitelist-based header filtering
2026-02-22 21:00:12 +08:00
maplelove
5dc1848466
feat(scrub): add comprehensive browser fingerprint and client identity header scrubbing
2026-02-22 20:51:00 +08:00
maplelove
9491517b26
fix(executor): use singleton transport to prevent OOM from connection pool leaks
2026-02-22 20:17:30 +08:00
maplelove
9370b5bd04
fix(executor): completely scrub all proxy tracing headers in executor
2026-02-22 19:43:10 +08:00
maplelove
abb51a0d93
fix(executor): correctly disable http2 ALPN in Antigravity client to resolve connection reset errors
2026-02-22 19:23:48 +08:00
maplelove
c8d809131b
fix(executor): improve antigravity reverse proxy emulation
...
- force http/1.1 instead of http/2
- explicit connection close
- strip proxy headers X-Forwarded-For and X-Real-IP
- add project id to fetch models payload
2026-02-22 18:41:58 +08:00
Kirill Turanskiy
1f8f198c45
feat: passthrough upstream response headers to clients
...
CPA previously stripped ALL response headers from upstream AI provider
APIs, preventing clients from seeing rate-limit info, request IDs,
server-timing and other useful headers.
Changes:
- Add Headers field to Response and StreamResult structs
- Add FilterUpstreamHeaders helper (hop-by-hop + security denylist)
- Add WriteUpstreamHeaders helper (respects CPA-set headers)
- ExecuteWithAuthManager/ExecuteCountWithAuthManager now return headers
- ExecuteStreamWithAuthManager returns headers from initial connection
- All 11 provider executors populate Response.Headers
- All handler call sites write filtered upstream headers before response
Filtered headers (not forwarded):
- RFC 7230 hop-by-hop: Connection, Transfer-Encoding, Keep-Alive, etc.
- Security: Set-Cookie
- CPA-managed: Content-Length, Content-Encoding
2026-02-18 00:16:22 +03:00
Luis Pater
a5a25dec57
refactor(translator, executor): remove redundant bytes.Clone calls for improved performance
...
- Replaced all instances of `bytes.Clone` with direct references to enhance efficiency.
- Simplified payload handling across executors and translators by eliminating unnecessary data duplication.
2026-02-06 03:26:29 +08:00
Luis Pater
09ecfbcaed
refactor(executor): optimize payload cloning and streamline SDK translator usage
...
- Replaced unnecessary `bytes.Clone` calls for `opts.OriginalRequest` throughout executors.
- Introduced intermediate variable `originalPayloadSource` to simplify payload processing.
- Ensured better clarity and structure in request translation logic.
2026-02-06 01:44:20 +08:00
Luis Pater
25c6b479c7
refactor(util, executor): optimize payload handling and schema processing
...
- Replaced repetitive string operations with a centralized `escapeGJSONPathKey` function.
- Streamlined handling of JSON schema cleaning for Gemini and Antigravity requests.
- Improved payload management by transitioning from byte slices to strings for processing.
- Removed unnecessary cloning of byte slices in several places.
2026-02-05 19:00:30 +08:00
Luis Pater
f887f9985d
Merge pull request #1248 from shekohex/feat/responses-compact
...
feat(openai): add responses/compact support
2026-01-31 03:12:55 +08:00
Shady Khalifa
95096bc3fc
feat(openai): add responses/compact support
2026-01-26 16:36:01 +02:00
Luis Pater
70897247b2
feat(auth): add support for request_retry and disable_cooling overrides
...
Implement `request_retry` and `disable_cooling` metadata overrides for authentication management. Update retry and cooling logic accordingly across `Manager`, Antigravity executor, and file synthesizer. Add tests to validate new behaviors.
2026-01-26 21:59:08 +08:00
Luis Pater
2af4a8dc12
refactor(runtime): implement retry logic for Antigravity executor with improved error handling and capacity management
2026-01-26 06:22:46 +08:00
Luis Pater
2e6a2b655c
Merge pull request #1132 from XYenon/fix/gemini-models-displayname-override
...
fix(gemini): preserve displayName and description in models list
2026-01-25 03:40:04 +08:00
hkfires
ecc850bfb7
feat(executor): apply payload rules using requested model
2026-01-23 16:38:41 +08:00
hkfires
7ca045d8b9
fix(executor): adjust model-specific request payload
2026-01-22 20:28:08 +08:00
hkfires
abfca6aab2
refactor(util): reorder gemini schema cleaner helpers
2026-01-22 18:38:48 +08:00
sowar1987
a2f8f59192
Fix Gemini function-calling INVALID_ARGUMENT by relaxing Gemini tool validation and cleaning schema
2026-01-22 17:11:07 +08:00
XYenon
8c7c446f33
fix(gemini): preserve displayName and description in models list
...
Previously GeminiModels handler unconditionally overwrote displayName
and description with the model name, losing the original values defined
in model definitions (e.g., 'Gemini 3 Pro Preview').
Now only set these fields as fallback when they are missing or empty.
2026-01-22 15:19:27 +08:00
hkfires
6dcbbf64c3
fix(executor): only strip maxOutputTokens for non-claude models
2026-01-21 10:49:20 +08:00
bexcodex
9f364441e8
Fix antigravity malformed_function_call
2026-01-20 19:54:54 +08:00
hkfires
e641fde25c
feat(registry): support provider-specific model info lookup
2026-01-20 10:01:17 +08:00
hkfires
1d2fe55310
fix(executor): stop rewriting thinkingLevel for gemini
2026-01-19 19:49:39 +08:00
hkfires
c175821cc4
feat(registry): expand antigravity model config
...
Remove static Name mapping and add entries for claude-sonnet-4-5,
tab_flash_lite_preview, and gpt-oss-120b-medium configs
2026-01-19 19:32:00 +08:00
hkfires
c7e8830a56
refactor(thinking): pass source and target formats to ApplyThinking for cross-format validation
...
Update ApplyThinking signature to accept fromFormat and toFormat parameters
instead of a single provider string. This enables:
- Proper level-to-budget conversion when source is level-based (openai/codex)
and target is budget-based (gemini/claude)
- Strict budget range validation when source and target formats match
- Level clamping to nearest supported level for cross-format requests
- Format alias resolution in SDK translator registry for codex/openai-response
Also adds ErrBudgetOutOfRange error code and improves iflow config extraction
to fall back to openai format when iflow-specific config is not present.
2026-01-18 10:30:15 +08:00