core: unify item metadata feature flag with legacy alias

This commit is contained in:
Roy Han
2026-03-16 11:20:50 -07:00
parent 322991227f
commit d4bae810db
7 changed files with 34 additions and 12 deletions

View File

@@ -407,6 +407,9 @@
"include_apply_patch_tool": {
"type": "boolean"
},
"item_metadata": {
"type": "boolean"
},
"js_repl": {
"type": "boolean"
},
@@ -1962,6 +1965,9 @@
"include_apply_patch_tool": {
"type": "boolean"
},
"item_metadata": {
"type": "boolean"
},
"js_repl": {
"type": "boolean"
},

View File

@@ -3787,7 +3787,7 @@ impl Session {
response_item: ResponseItem,
user_message_type: Option<UserMessageType>,
) {
let user_message_type = if self.enabled(Feature::UserMessageTypeMetadata) {
let user_message_type = if self.enabled(Feature::ItemMetadata) {
user_message_type
} else {
None
@@ -3918,7 +3918,7 @@ impl Session {
}
let mut input_item: ResponseInputItem = input.into();
if self.enabled(Feature::UserMessageTypeMetadata) {
if self.enabled(Feature::ItemMetadata) {
stamp_user_message_type_on_input_item(&mut input_item, UserMessageType::PromptSteering);
}
@@ -3941,7 +3941,7 @@ impl Session {
ResponseInputItem::Message { .. } => Some(UserMessageType::PromptQueued),
_ => None,
};
if self.enabled(Feature::UserMessageTypeMetadata)
if self.enabled(Feature::ItemMetadata)
&& let Some(kind) = user_message_type.clone()
{
stamp_user_message_type_on_input_item(&mut item, kind);
@@ -5726,7 +5726,7 @@ pub(crate) async fn run_turn(
.await;
let mut initial_input_for_turn: ResponseInputItem = ResponseInputItem::from(input.clone());
if sess.enabled(Feature::UserMessageTypeMetadata) {
if sess.enabled(Feature::ItemMetadata) {
stamp_user_message_type_on_input_item(&mut initial_input_for_turn, UserMessageType::Prompt);
}
let response_item: ResponseItem = initial_input_for_turn.clone().into();

View File

@@ -3841,7 +3841,7 @@ async fn task_finish_emits_prompt_queued_metadata_for_injected_user_input_when_f
Arc::get_mut(&mut sess)
.expect("session should be uniquely owned in this test")
.features
.enable(crate::features::Feature::UserMessageTypeMetadata)
.enable(crate::features::Feature::ItemMetadata)
.expect("feature flag should be enabled for this test");
let input = vec![UserInput::Text {

View File

@@ -174,8 +174,8 @@ pub enum Feature {
ToolCallMcpElicitation,
/// Enable personality selection in the TUI.
Personality,
/// Emit user_message_type metadata on user message turn items and request items.
UserMessageTypeMetadata,
/// Emit item-level metadata on request/response items.
ItemMetadata,
/// Enable native artifact tools.
Artifact,
/// Enable Fast mode selection in the TUI and request layer.
@@ -814,8 +814,8 @@ pub const FEATURES: &[FeatureSpec] = &[
default_enabled: true,
},
FeatureSpec {
id: Feature::UserMessageTypeMetadata,
key: "user_message_type_metadata",
id: Feature::ItemMetadata,
key: "item_metadata",
stage: Stage::UnderDevelopment,
default_enabled: false,
},

View File

@@ -45,6 +45,10 @@ const ALIASES: &[Alias] = &[
legacy_key: "memory_tool",
feature: Feature::MemoryTool,
},
Alias {
legacy_key: "user_message_type_metadata",
feature: Feature::ItemMetadata,
},
];
pub(crate) fn legacy_feature_keys() -> impl Iterator<Item = &'static str> {

View File

@@ -142,6 +142,18 @@ fn collab_is_legacy_alias_for_multi_agent() {
assert_eq!(feature_for_key("collab"), Some(Feature::Collab));
}
#[test]
fn user_message_type_metadata_is_legacy_alias_for_item_metadata() {
assert_eq!(feature_for_key("user_message_type_metadata"), Some(Feature::ItemMetadata));
assert_eq!(feature_for_key("item_metadata"), Some(Feature::ItemMetadata));
}
#[test]
fn item_metadata_is_under_development_and_disabled_by_default() {
assert_eq!(Feature::ItemMetadata.stage(), Stage::UnderDevelopment);
assert_eq!(Feature::ItemMetadata.default_enabled(), false);
}
#[test]
fn multi_agent_is_stable_and_enabled_by_default() {
assert_eq!(Feature::Collab.stage(), Stage::Stable);

View File

@@ -136,7 +136,7 @@ async fn user_message_type_metadata_is_emitted_when_feature_enabled() -> anyhow:
.with_config(|config| {
config
.features
.enable(Feature::UserMessageTypeMetadata)
.enable(Feature::ItemMetadata)
.expect("feature flag should be enabled for this test");
})
.build(&server)
@@ -259,7 +259,7 @@ async fn user_message_type_prompt_steering_metadata_is_emitted_when_feature_enab
.with_config(|config| {
config
.features
.enable(Feature::UserMessageTypeMetadata)
.enable(Feature::ItemMetadata)
.expect("feature flag should be enabled for this test");
})
.build(&server)
@@ -389,7 +389,7 @@ async fn user_message_type_prompt_queued_metadata_is_emitted_when_feature_enable
.with_config(|config| {
config
.features
.enable(Feature::UserMessageTypeMetadata)
.enable(Feature::ItemMetadata)
.expect("feature flag should be enabled for this test");
})
.build(&server)