Luis Pater
a235fb1507
Merge branch 'main' into plus
2026-01-15 03:30:56 +08:00
Luis Pater
b163f8ed9e
Fixed : #1004
...
feat(translator): add function name to response output item serialization
- Included `item.name` in the serialized response output to enhance output item handling.
2026-01-15 03:27:00 +08:00
ZqinKing
83e5f60b8b
fix(kiro): scale description compression by needed size
...
Compute a size-reduction based keep ratio and use it to trim
tool descriptions, avoiding forced minimum truncation when the
target size already fits. This aligns compression with actual
payload reduction needs and prevents over-compression.
2026-01-14 16:22:46 +08:00
ZqinKing
5b433f962f
feat(kiro): 实现动态工具压缩功能
...
## 背景
当 Claude Code 发送过多工具信息时,可能超出 Kiro API 请求限制导致 500 错误。
现有的工具描述截断(KiroMaxToolDescLen = 10237)只能限制单个工具的描述长度,
无法解决整体工具列表过大的问题。
## 解决方案
实现动态工具压缩功能,采用两步压缩策略:
1. 先检查原始大小,超过 20KB 才进行压缩
2. 第一步:简化 input_schema,只保留 type/enum/required 字段
3. 第二步:按比例缩短 description(最短 50 字符)
4. 保留全部工具和 skills 可调用,不丢弃任何工具
## 新增文件
- internal/translator/kiro/claude/tool_compression.go
- calculateToolsSize(): 计算工具列表的 JSON 序列化大小
- simplifyInputSchema(): 简化 input_schema,递归处理嵌套 properties
- compressToolDescription(): 按比例压缩描述,支持 UTF-8 安全截断
- compressToolsIfNeeded(): 主压缩函数,实现两步压缩策略
- internal/translator/kiro/claude/tool_compression_test.go
- 完整的单元测试覆盖所有新增函数
- 测试 UTF-8 安全性
- 测试压缩效果
## 修改文件
- internal/translator/kiro/common/constants.go
- 新增 ToolCompressionTargetSize = 20KB (压缩目标大小阈值)
- 新增 MinToolDescriptionLength = 50 (描述最短长度)
- internal/translator/kiro/claude/kiro_claude_request.go
- 在 convertClaudeToolsToKiro() 函数末尾调用 compressToolsIfNeeded()
## 测试结果
- 70KB 工具压缩至 17KB (74.7% 压缩率)
- 所有单元测试通过
## 预期效果
- 80KB+ tools 压缩至 ~15KB
- 不影响工具调用功能
2026-01-14 11:07:07 +08:00
Luis Pater
216dafe44b
Merge branch 'router-for-me:main' into main
2026-01-12 00:27:15 +08:00
hkfires
220ca45f74
fix(codex): only override instructions when upstream provides them
2026-01-11 15:52:21 +08:00
hkfires
70a82d80ac
fix(codex): only override instructions in responses for OpenCode UA
2026-01-11 15:19:37 +08:00
hkfires
ac626111ac
feat(codex): add OpenCode instructions based on user agent
2026-01-11 13:36:35 +08:00
Luis Pater
514b9bf9fc
Merge origin/main into pr-92
2026-01-10 01:12:22 +08:00
Luis Pater
4d7f389b69
Fixed : #941
...
fix(translator): ensure fallback to valid originalRequestRawJSON in response handling
2026-01-10 01:01:09 +08:00
Luis Pater
1906ebcfce
Merge branch 'main' into plus
2026-01-09 21:52:24 +08:00
hkfires
ee62ef4745
refactor(logging): clean up oauth logs and debugs
2026-01-09 11:20:55 +08:00
Luis Pater
d47b7dc79a
refactor(response): enhance parameter handling for Codex to Claude conversion
2026-01-09 05:20:19 +08:00
Luis Pater
3d01b3cfe8
Merge pull request #553 from XInTheDark/fix/builtin-tools-web-search
...
fix(translator): preserve built-in tools (web_search) to Responses API
2026-01-09 04:40:13 +08:00
Luis Pater
4794645dec
Merge branch 'main' into plus
2026-01-06 23:20:39 +08:00
Luis Pater
8f8dfd081b
Merge pull request #850 from can1357/main
...
feat(translator): add developer role support for Gemini translators
2026-01-05 11:27:24 +08:00
Luis Pater
478aff1189
Merge branch 'router-for-me:main' into main
2026-01-05 09:26:23 +08:00
Luis Pater
8edbda57cf
feat(translator): add thoughtSignature to node parts for Gemini and Antigravity requests
...
Enhanced node structure by including `thoughtSignature` for inline data parts in Gemini OpenAI, Gemini CLI, and Antigravity request handlers to improve traceability of thought processes.
2026-01-05 09:25:17 +08:00
can1357
6762e081f3
feat(translator): add developer role support for Gemini translators
...
Treat OpenAI's "developer" role the same as "system" role in request
translation for gemini, gemini-cli, and antigravity backends.
2026-01-03 21:01:01 +01:00
Luis Pater
771fec9447
Merge branch 'main' into plus
2026-01-04 01:38:40 +08:00
Luis Pater
7815ee338d
fix(translator): adjust message_delta emission boundary in Claude-to-OpenAI conversion
...
Fixed incorrect boundary logic for `message_delta` emission, ensuring proper handling of usage updates and `emitMessageStopIfNeeded` within the response loop.
2026-01-04 01:36:51 +08:00
Luis Pater
ba486ca6b7
Merge branch 'router-for-me:main' into main
2026-01-01 21:03:16 +08:00
hkfires
2d2f4572a7
fix(translator): remove unnecessary whitespace trimming in reasoning text collection
2026-01-01 12:39:09 +08:00
hkfires
8f4c46f38d
fix(translator): emit tool_result messages before user content in Claude-to-OpenAI conversion
2026-01-01 11:11:43 +08:00
hkfires
b6ba51bc2a
feat(translator): add thinking block and tool result handling for Claude-to-OpenAI conversion
2026-01-01 09:41:25 +08:00
Luis Pater
e85c9d9322
Merge branch 'main' into plus
2025-12-30 23:33:35 +08:00
Luis Pater
c6b0e85b54
Fixed : #790
...
fix(gemini): include full text in response output events
2025-12-30 20:44:13 +08:00
Luis Pater
cf369d4684
Merge branch 'router-for-me:main' into main
2025-12-29 22:41:44 +08:00
Luis Pater
d8fc485513
fix(translators): correct key path for system_instruction.parts in Claude request logic
2025-12-29 11:54:26 +08:00
Luis Pater
d473c952fb
Merge branch 'main' into plus
2025-12-28 00:56:04 +08:00
Luis Pater
7646a2b877
Fixed : #749
...
fix(translators): ensure `gjson.String` content is non-empty before setting `parts` in OpenAI request logic
2025-12-28 00:54:26 +08:00
Luis Pater
d35152bbef
Merge branch 'router-for-me:main' into main
2025-12-27 22:03:50 +08:00
Luis Pater
c281f4cbaf
Fixed : #747
...
fix(translators): rename and integrate `usageMetadata` as `cpaUsageMetadata` in Claude processing logic
2025-12-27 22:02:11 +08:00
Luis Pater
60936b5185
Merge branch 'router-for-me:main' into main
2025-12-27 03:57:03 +08:00
Luis Pater
72274099aa
Fixed : #738
...
fix(translators): refine prompt token calculation by incorporating cached tokens in Claude response handling
2025-12-27 03:56:11 +08:00
Luis Pater
b7f7b3a1d8
Merge branch 'router-for-me:main' into main
2025-12-27 01:26:33 +08:00
Luis Pater
dcae098e23
Fixed : #736
...
fix(translators): handle gjson string types in Claude request processing to ensure consistent content parsing
2025-12-27 01:25:47 +08:00
Luis Pater
9fe6a215e6
Merge branch 'router-for-me:main' into main
2025-12-26 05:10:19 +08:00
Luis Pater
33e53a2a56
fix(translators): ensure correct handling and output of multimodal assistant content across request handlers
2025-12-26 05:08:04 +08:00
Luis Pater
3f949b7f84
Merge pull request #704 from tinyc0der/add-index
...
fix(openai): add index field to image response for LiteLLM compatibility
2025-12-25 21:35:12 +08:00
TinyCoder
a7fc2ee4cf
refactor(image): avoid using json.Marshal
2025-12-25 14:21:01 +07:00
Luis Pater
ed57d82bc1
Merge branch 'router-for-me:main' into main
2025-12-24 23:31:09 +08:00
Luis Pater
06ad527e8c
Fixed : #696
...
fix(translators): adjust prompt token calculation by subtracting cached tokens across Gemini, OpenAI, and Claude handlers
2025-12-24 23:29:18 +08:00
TinyCoder
671558a822
fix(openai): add index field to image response for LiteLLM compatibility
...
LiteLLM's Pydantic model requires an index field in each image object.
Without it, responses fail validation with "images.0.index Field required".
2025-12-24 17:43:31 +07:00
TinyCoder
c169b32570
refactor(kiro): Remove unused variables in OpenAI translator
...
Remove dead code that was never used:
- toolCallIDToName map: built but never read from
- seenToolCallIDs: declared but never populated, only suppressed with _
2025-12-24 15:10:35 +07:00
TinyCoder
36a512fdf2
fix(kiro): Handle tool results correctly in OpenAI format translation
...
Fix three issues in Kiro OpenAI translator that caused "Improperly formed request"
errors when processing LiteLLM-translated requests with tool_use/tool_result:
1. Skip merging tool role messages in MergeAdjacentMessages() to preserve
individual tool_call_id fields
2. Track pendingToolResults and attach to the next user message instead of
only the last message. Create synthetic user message when conversation
ends with tool results.
3. Insert synthetic user message with tool results before assistant messages
to maintain proper alternating user/assistant structure. This fixes the case
where LiteLLM translates Anthropic user messages containing only tool_result
blocks into tool role messages followed by assistant.
Adds unit tests covering all tool result handling scenarios.
2025-12-24 15:10:35 +07:00
Luis Pater
e592a57458
Merge branch 'router-for-me:main' into main
2025-12-24 04:25:06 +08:00
Luis Pater
66769ec657
fix(translators): update role from tool to user in Gemini and Gemini-CLI requests
2025-12-24 04:24:07 +08:00
Luis Pater
7569320770
Merge branch 'dev' into fix/antigravity-prompt-caching
2025-12-24 03:49:46 +08:00
Luis Pater
e8de87ee90
Merge branch 'router-for-me:main' into main
2025-12-23 08:48:29 +08:00