mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-10 03:09:50 +08:00
fix(ai-formats): accept Claude context_management in responses conversion
This commit is contained in:
@@ -486,6 +486,7 @@ fn standard_request_root_field_is_audited(source: FormatId, key: &str) -> bool {
|
|||||||
key,
|
key,
|
||||||
"cache_control"
|
"cache_control"
|
||||||
| "container"
|
| "container"
|
||||||
|
| "context_management"
|
||||||
| "inference_geo"
|
| "inference_geo"
|
||||||
| "max_tokens"
|
| "max_tokens"
|
||||||
| "messages"
|
| "messages"
|
||||||
@@ -858,7 +859,12 @@ fn request_extension_key_is_cross_format_safe(
|
|||||||
| "prompt_cache_key"
|
| "prompt_cache_key"
|
||||||
| "prompt_cache_retention"
|
| "prompt_cache_retention"
|
||||||
| "verbosity",
|
| "verbosity",
|
||||||
) | (FormatId::ClaudeMessages, _, "claude", "output_config")
|
) | (
|
||||||
|
FormatId::ClaudeMessages,
|
||||||
|
_,
|
||||||
|
"claude",
|
||||||
|
"context_management" | "output_config",
|
||||||
|
)
|
||||||
| (
|
| (
|
||||||
FormatId::ClaudeMessages,
|
FormatId::ClaudeMessages,
|
||||||
FormatId::OpenAiChat | FormatId::GeminiGenerateContent,
|
FormatId::OpenAiChat | FormatId::GeminiGenerateContent,
|
||||||
@@ -2517,6 +2523,25 @@ mod tests {
|
|||||||
assert_eq!(converted["input"][0]["content"][0]["type"], "input_text");
|
assert_eq!(converted["input"][0]["content"][0]["type"], "input_text");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn claude_request_to_responses_accepts_context_management() {
|
||||||
|
let body = json!({
|
||||||
|
"model": "claude-sonnet",
|
||||||
|
"messages": [{"role": "user", "content": "hello"}],
|
||||||
|
"max_tokens": 128,
|
||||||
|
"context_management": {
|
||||||
|
"edits": [{"type": "clear_tool_uses_20250919"}]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let converted = convert_request_pure("claude:messages", "openai:responses", &body)
|
||||||
|
.expect("context_management is audited for Claude cross-format requests")
|
||||||
|
.value;
|
||||||
|
|
||||||
|
assert_eq!(converted["model"], "claude-sonnet");
|
||||||
|
assert!(converted.get("context_management").is_none());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn pure_request_conversion_does_not_apply_model_or_stream_edits() {
|
fn pure_request_conversion_does_not_apply_model_or_stream_edits() {
|
||||||
let body = json!({
|
let body = json!({
|
||||||
|
|||||||
Reference in New Issue
Block a user