mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-09 18:59: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,
|
||||
"cache_control"
|
||||
| "container"
|
||||
| "context_management"
|
||||
| "inference_geo"
|
||||
| "max_tokens"
|
||||
| "messages"
|
||||
@@ -858,7 +859,12 @@ fn request_extension_key_is_cross_format_safe(
|
||||
| "prompt_cache_key"
|
||||
| "prompt_cache_retention"
|
||||
| "verbosity",
|
||||
) | (FormatId::ClaudeMessages, _, "claude", "output_config")
|
||||
) | (
|
||||
FormatId::ClaudeMessages,
|
||||
_,
|
||||
"claude",
|
||||
"context_management" | "output_config",
|
||||
)
|
||||
| (
|
||||
FormatId::ClaudeMessages,
|
||||
FormatId::OpenAiChat | FormatId::GeminiGenerateContent,
|
||||
@@ -2517,6 +2523,25 @@ mod tests {
|
||||
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]
|
||||
fn pure_request_conversion_does_not_apply_model_or_stream_edits() {
|
||||
let body = json!({
|
||||
|
||||
Reference in New Issue
Block a user