mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-03 01:40:21 +08:00
Fix reasoning model directive response identity
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
use serde_json::Value;
|
||||
use uuid::Uuid;
|
||||
|
||||
use crate::formats::shared::model_directives::model_directive_display_model_from_report_context;
|
||||
use crate::formats::shared::AiSurfaceFinalizeError;
|
||||
use crate::provider_compat::kiro_stream::{
|
||||
build_kiro_initial_sse_events, build_kiro_stream_error_sse_events, encode_kiro_sse_events,
|
||||
@@ -63,18 +64,22 @@ impl KiroToClaudeCliStreamState {
|
||||
|
||||
impl KiroClaudeStreamState {
|
||||
pub(super) fn new(report_context: &Value) -> Self {
|
||||
let model = report_context
|
||||
.get("mapped_model")
|
||||
.and_then(Value::as_str)
|
||||
.filter(|value| !value.is_empty())
|
||||
let model = model_directive_display_model_from_report_context(report_context)
|
||||
.or_else(|| {
|
||||
report_context
|
||||
.get("mapped_model")
|
||||
.and_then(Value::as_str)
|
||||
.filter(|value| !value.is_empty())
|
||||
.map(ToOwned::to_owned)
|
||||
})
|
||||
.or_else(|| {
|
||||
report_context
|
||||
.get("model")
|
||||
.and_then(Value::as_str)
|
||||
.filter(|value| !value.is_empty())
|
||||
.map(ToOwned::to_owned)
|
||||
})
|
||||
.unwrap_or("unknown")
|
||||
.to_string();
|
||||
.unwrap_or_else(|| "unknown".to_string());
|
||||
let thinking_enabled = report_context
|
||||
.get("original_request_body")
|
||||
.and_then(Value::as_object)
|
||||
|
||||
@@ -86,6 +86,32 @@ fn kiro_stream_rewriter_converts_text_events_to_claude_sse() {
|
||||
assert!(text.contains("\"input_tokens\":2000"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn kiro_stream_rewriter_restores_model_directive_display_model() {
|
||||
let report_context = json!({
|
||||
"provider_api_format": "claude:messages",
|
||||
"client_api_format": "claude:messages",
|
||||
"envelope_name": "kiro:generateAssistantResponse",
|
||||
"model": "claude-sonnet-4.5-high",
|
||||
"mapped_model": "claude-sonnet-4.5"
|
||||
});
|
||||
let mut rewriter = KiroToClaudeCliStreamState::new(&report_context);
|
||||
let first = rewriter
|
||||
.push_chunk(
|
||||
&report_context,
|
||||
&encode_event_frame(
|
||||
"event",
|
||||
Some("assistantResponseEvent"),
|
||||
&json!({"content": "Hello"}),
|
||||
),
|
||||
)
|
||||
.expect("rewrite should succeed");
|
||||
let text = String::from_utf8(first).expect("utf8 should decode");
|
||||
|
||||
assert!(text.contains("\"model\":\"claude-sonnet-4.5-high\""));
|
||||
assert!(!text.contains("\"model\":\"claude-sonnet-4.5\""));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn kiro_stream_rewriter_converts_tool_use_to_claude_events() {
|
||||
let report_context = kiro_report_context(false);
|
||||
|
||||
Reference in New Issue
Block a user