Include Node REPL policy in turn metadata (#38241)

## What changed

- Parse `node_repl_auto_review_required` and `node_repl_disabled` from model catalog entries and include their values in each turn's Responses API metadata.
- Treat both fields as reserved metadata so client-provided values cannot override the selected model's policy.
- Use the selected review model's catalog entry when building metadata for review turns.

## Testing

- Cover metadata propagation across model switches, review turns, Responses API requests, and MCP tool calls.

GitOrigin-RevId: c1f63426eeb8e559abff439fbc618716a4908aff
This commit is contained in:
Ankush Gupta authored and copyberry committed 2026-08-12 19:37:51 +00:00
1 parent d6eefb26a6
commit 74004b5397
23 files changed
+223 -27

No files matched your search

+8
View File
@@ -442,6 +442,10 @@ pub struct ModelInfo {
pub supports_search_tool: bool,
#[serde(default)]
pub use_responses_lite: bool,
#[serde(default)]
pub node_repl_auto_review_required: bool,
#[serde(default)]
pub node_repl_disabled: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub auto_review_model_override: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -855,6 +859,8 @@ mod tests {
used_fallback_model_metadata: false,
supports_search_tool: false,
use_responses_lite: false,
node_repl_auto_review_required: false,
node_repl_disabled: false,
auto_review_model_override: None,
model_specialty: None,
tool_mode: None,
@@ -1435,6 +1441,8 @@ mod tests {
assert_eq!(model.web_search_tool_type, WebSearchToolType::Text);
assert!(!model.supports_search_tool);
assert!(!model.use_responses_lite);
assert!(!model.node_repl_auto_review_required);
assert!(!model.node_repl_disabled);
assert_eq!(model.comp_hash, None);
assert_eq!(model.auto_review_model_override, None);
assert_eq!(model.tool_mode, None);