diff --git a/crates/jp_config/src/conversation.rs b/crates/jp_config/src/conversation.rs index 1237ee853..00cfc8982 100644 --- a/crates/jp_config/src/conversation.rs +++ b/crates/jp_config/src/conversation.rs @@ -29,7 +29,7 @@ use crate::{ internal::merge::{map_with_strategy, vec_with_strategy}, partial::{ToPartial, partial_opt}, types::{ - map::{MergeableMap, map_to_mergeable_partial}, + map::{MergeableMap, map_to_partial_per_key}, vec::{MergeableVec, MergedVec, vec_to_mergeable_partial}, }, validate::Validator, @@ -201,7 +201,9 @@ impl ToPartial for ConversationConfig { tools: self.tools.to_partial(), compaction: self.compaction.to_partial(), attachments: vec_to_mergeable_partial(&self.attachments), - labels: map_to_mergeable_partial(self.labels.iter()), + // Per key rather than `replace`: a label rule the workspace config + // gained after this conversation was created still reaches it. + labels: map_to_partial_per_key(self.labels.iter()), inquiry: self.inquiry.to_partial(), start_local: partial_opt(&self.start_local, defaults.start_local), default_id: self.default_id.clone(), diff --git a/crates/jp_config/src/conversation/compaction.rs b/crates/jp_config/src/conversation/compaction.rs index 0940818ea..3fae5201b 100644 --- a/crates/jp_config/src/conversation/compaction.rs +++ b/crates/jp_config/src/conversation/compaction.rs @@ -87,23 +87,16 @@ impl AssignKeyValue for PartialCompactionConfig { impl PartialConfigDelta for PartialCompactionConfig { fn delta(&self, next: Self) -> Self { Self { - // Not `delta_mergeable_vec`, which would say `replace` for any - // difference: this field's partial is a bare `MergeableVec`, so an - // empty one is both "the user said nothing about rules" and "the - // user asked for no rules". A sparse partial (a `--model` override, - // say) carries the empty one, and replacing with it would record - // zero rules the user never asked for, making a later - // `jp conversation compact` a no-op. - // - // Telling the two apart needs the field's partial to be an - // `Option>`, as every converted list field has, - // where `None` is absent and `Some([])` is a deliberate empty. - rules: { - next.rules - .into_iter() - .filter(|v| !self.rules.contains(v)) - .collect::>() - .into() + // An empty `rules` says nothing about rules rather than asking for + // none: `fill_from` substitutes the built-in defaults for it, so + // that is what the config language already means by an empty list. + // Every sparse partial reaching this delta carries one, and + // replacing with it would record zero rules the user never asked + // for, making a later `jp conversation compact` do nothing. + rules: if next.rules.is_empty() { + MergeableVec::default() + } else { + crate::delta::delta_mergeable_vec(&self.rules, next.rules) }, } } diff --git a/crates/jp_config/src/delta_law_tests.rs b/crates/jp_config/src/delta_law_tests.rs index 24dcd5a67..b9624362b 100644 --- a/crates/jp_config/src/delta_law_tests.rs +++ b/crates/jp_config/src/delta_law_tests.rs @@ -79,31 +79,6 @@ fn assert_law(before: &[&str], after: &[&str]) { ); } -/// Fields whose clear is known not to survive a fold, and why. -/// -/// `conversation.compaction.rules` keeps its rules in a bare `MergeableVec`, so -/// an empty one cannot say whether the user asked for no rules or said nothing -/// about them. -/// A delta that replaced on any difference would record zero rules from any -/// sparse partial that reached it, which is how it was found: routing it -/// through [`delta_mergeable_vec`] wrote `replace` with an empty list into 37 -/// snapshots and appended an event that should not exist. -/// Reaching it needs the partial to be an `Option>`, as every -/// converted list field has. -/// -/// `model.parameters.other` is the catch-all arm of its own key-value dispatch, -/// so `parameters.other` names a key *inside* the map rather than the map -/// itself, and clearing removes an entry that was never there. -/// Reaching the whole field needs a path vocabulary that can say "this map" -/// where the map is also the fallback. -const CLEAR_NOT_RECORDED: &[&str] = &[ - "conversation.compaction.rules", - "assistant.model.parameters.other", - "style.reasoning.summary_model.parameters.other", - "conversation.inquiry.assistant.model.parameters.other", - "conversation.title.generate.model.parameters.other", -]; - /// Set `path` to whichever of a few generic values it accepts. /// /// A field has to hold something before clearing it proves anything, and there @@ -229,9 +204,7 @@ fn clearing_any_field_survives_a_fold() { } folded.merge(&(), delta).expect("folding cannot fail"); - if crate::util::build(folded).ok().as_ref() != Some(&expected) - && !CLEAR_NOT_RECORDED.contains(&path.as_str()) - { + if crate::util::build(folded).ok().as_ref() != Some(&expected) { lost.push(path); } } diff --git a/crates/jp_config/src/lib_tests.rs b/crates/jp_config/src/lib_tests.rs index d09a01057..70bb8e713 100644 --- a/crates/jp_config/src/lib_tests.rs +++ b/crates/jp_config/src/lib_tests.rs @@ -682,6 +682,43 @@ fn a_server_added_to_the_workspace_reaches_an_existing_conversation() { ); } +/// A label rule only the workspace config declares reaches an existing +/// conversation, the same way a server or a tool does. +#[test] +fn a_label_added_to_the_workspace_reaches_an_existing_conversation() { + use schematic::PartialConfig as _; + + use crate::conversation::label::LabelConfig; + + // The conversation was created knowing only `topic`. + let mut conversation = AppConfig::new_test(); + conversation + .conversation + .labels + .insert("topic".to_owned(), LabelConfig::Static("rust".to_owned())); + + // The workspace config has since gained `area`. + let mut files = PartialAppConfig::new_test(); + files.conversation.labels.insert( + "area".to_owned(), + LabelConfig::Static("config".to_owned()).to_partial(), + ); + + files + .merge(&(), conversation.to_partial()) + .expect("merging cannot fail"); + let resolved = crate::util::build(files).expect("valid config"); + + assert!( + resolved.conversation.labels.contains_key("area"), + "a label only the files declare survives the conversation layer" + ); + assert!( + resolved.conversation.labels.contains_key("topic"), + "the conversation's own label survives too" + ); +} + /// A union that names an expanded form contributes both the shorthand path and /// the expanded keys; a union of distinct values contributes only its path. /// diff --git a/crates/jp_config/src/types/map.rs b/crates/jp_config/src/types/map.rs index d490bb6c8..d69e8976d 100644 --- a/crates/jp_config/src/types/map.rs +++ b/crates/jp_config/src/types/map.rs @@ -164,24 +164,6 @@ impl FillDefaults for MergeableMap { } } -/// Convert a resolved map to a `MergeableMap` with replace -/// strategy. -/// -/// Used by `ToPartial` impls for fields whose finalized type is a plain map but -/// whose partial is a [`MergeableMap`]. -pub fn map_to_mergeable_partial<'a, T: ToPartial + 'a>( - entries: impl IntoIterator, -) -> MergeableMap { - MergeableMap::Merged(MergedMap { - value: entries - .into_iter() - .map(|(k, v)| (k.clone(), v.to_partial())) - .collect(), - strategy: Some(MergedMapStrategy::Replace), - discard_when_merged: false, - }) -} - /// Convert a resolved map to a `MergeableMap` that merges per key. /// /// Used by `ToPartial` impls for a map that should still take an entry a later diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_chat_completion_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_chat_completion_stream__conversation_stream.snap index 8a1170af6..3d7f3660b 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_chat_completion_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_chat_completion_stream__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_fable_5_forced_tool_soft_forces__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_fable_5_forced_tool_soft_forces__conversation_stream.snap index 0847dd23f..a5e46fd91 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_fable_5_forced_tool_soft_forces__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_fable_5_forced_tool_soft_forces__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_image_attachment__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_image_attachment__conversation_stream.snap index a36aa7d0d..e1038c49a 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_image_attachment__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_image_attachment__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_multi_turn_conversation__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_multi_turn_conversation__conversation_stream.snap index 94f492ae3..f54dda974 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_multi_turn_conversation__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_multi_turn_conversation__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_opus_4_6_adaptive_thinking__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_opus_4_6_adaptive_thinking__conversation_stream.snap index f9633e2d5..59b4bf690 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_opus_4_6_adaptive_thinking__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_opus_4_6_adaptive_thinking__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_opus_4_6_max_effort__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_opus_4_6_max_effort__conversation_stream.snap index 71730ed84..2112b678f 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_opus_4_6_max_effort__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_opus_4_6_max_effort__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_redacted_thinking__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_redacted_thinking__conversation_stream.snap index a731ab036..44534b079 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_redacted_thinking__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_redacted_thinking__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_request_chaining__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_request_chaining__conversation_stream.snap index 856232174..0a90ac1b7 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_request_chaining__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_request_chaining__conversation_stream.snap @@ -89,11 +89,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_structured_output__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_structured_output__conversation_stream.snap index c4eeed12c..166e538ed 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_structured_output__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_structured_output__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_auto__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_auto__conversation_stream.snap index 9eb1d2e60..d842e7001 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_auto__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_auto__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_function__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_function__conversation_stream.snap index 7f63994ea..6b08a6f46 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_function__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_function__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_reasoning__conversation_stream.snap index df8edd445..3fbff0297 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_required_no_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_required_no_reasoning__conversation_stream.snap index 384f1dc62..3e6504899 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_required_no_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_required_no_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_required_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_required_reasoning__conversation_stream.snap index 712f6c39d..ca22143dd 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_required_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_required_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_stream__conversation_stream.snap index 88d09e21d..f8b1b0dd2 100644 --- a/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/anthropic/test_tool_call_stream__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_chat_completion_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_chat_completion_stream__conversation_stream.snap index a48d34c93..397a022f4 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_chat_completion_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_chat_completion_stream__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_multi_turn_conversation__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_multi_turn_conversation__conversation_stream.snap index d807034a3..44a55fc27 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_multi_turn_conversation__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_multi_turn_conversation__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_structured_output__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_structured_output__conversation_stream.snap index 508a63831..b5d181dca 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_structured_output__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_structured_output__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_auto__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_auto__conversation_stream.snap index b891b269a..c9b82d54f 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_auto__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_auto__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_function__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_function__conversation_stream.snap index 86b49c529..63ee07487 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_function__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_function__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_reasoning__conversation_stream.snap index f4502e382..8792bde8c 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_required_no_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_required_no_reasoning__conversation_stream.snap index 5d7558f92..72c2a5883 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_required_no_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_required_no_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_required_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_required_reasoning__conversation_stream.snap index 6111e7470..0e649e1ce 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_required_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_required_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_stream__conversation_stream.snap index 1658bc5ba..034fe7ce4 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_tool_call_stream__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_unknown_model_auto_omits_effort__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_unknown_model_auto_omits_effort__conversation_stream.snap index 11c4579ad..036eef0e5 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_unknown_model_auto_omits_effort__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_unknown_model_auto_omits_effort__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/cerebras/test_unknown_model_off_sends_none__conversation_stream.snap b/crates/jp_llm/tests/fixtures/cerebras/test_unknown_model_off_sends_none__conversation_stream.snap index 21729e1d0..e30199519 100644 --- a/crates/jp_llm/tests/fixtures/cerebras/test_unknown_model_off_sends_none__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/cerebras/test_unknown_model_off_sends_none__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_chat_completion_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_chat_completion_stream__conversation_stream.snap index c68a45405..b0cd089eb 100644 --- a/crates/jp_llm/tests/fixtures/google/test_chat_completion_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_chat_completion_stream__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_gemini_3_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_gemini_3_reasoning__conversation_stream.snap index 736daac43..9dd02b94c 100644 --- a/crates/jp_llm/tests/fixtures/google/test_gemini_3_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_gemini_3_reasoning__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_image_attachment__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_image_attachment__conversation_stream.snap index 488e5b697..c61cc9a3a 100644 --- a/crates/jp_llm/tests/fixtures/google/test_image_attachment__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_image_attachment__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_multi_turn_conversation__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_multi_turn_conversation__conversation_stream.snap index deaca1736..71164989d 100644 --- a/crates/jp_llm/tests/fixtures/google/test_multi_turn_conversation__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_multi_turn_conversation__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_structured_output__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_structured_output__conversation_stream.snap index 89d9952f7..53ab1ffba 100644 --- a/crates/jp_llm/tests/fixtures/google/test_structured_output__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_structured_output__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_tool_call_auto__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_tool_call_auto__conversation_stream.snap index 2e1628860..7631cfa53 100644 --- a/crates/jp_llm/tests/fixtures/google/test_tool_call_auto__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_tool_call_auto__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_tool_call_function__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_tool_call_function__conversation_stream.snap index a3e9ca598..1cb58fd7b 100644 --- a/crates/jp_llm/tests/fixtures/google/test_tool_call_function__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_tool_call_function__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_tool_call_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_tool_call_reasoning__conversation_stream.snap index 4c0339f8a..504b8acd6 100644 --- a/crates/jp_llm/tests/fixtures/google/test_tool_call_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_tool_call_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_tool_call_required_no_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_tool_call_required_no_reasoning__conversation_stream.snap index 442495cfd..a9ab53137 100644 --- a/crates/jp_llm/tests/fixtures/google/test_tool_call_required_no_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_tool_call_required_no_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_tool_call_required_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_tool_call_required_reasoning__conversation_stream.snap index 44e5ba8d2..de0b689d1 100644 --- a/crates/jp_llm/tests/fixtures/google/test_tool_call_required_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_tool_call_required_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_tool_call_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_tool_call_stream__conversation_stream.snap index eb1f6b2f6..10dcb8301 100644 --- a/crates/jp_llm/tests/fixtures/google/test_tool_call_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_tool_call_stream__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/google/test_unknown_model_inferred_thinking_level__conversation_stream.snap b/crates/jp_llm/tests/fixtures/google/test_unknown_model_inferred_thinking_level__conversation_stream.snap index b63e2f173..74461a35d 100644 --- a/crates/jp_llm/tests/fixtures/google/test_unknown_model_inferred_thinking_level__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/google/test_unknown_model_inferred_thinking_level__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_chat_completion_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_chat_completion_stream__conversation_stream.snap index 31f486d86..698d3c865 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_chat_completion_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_chat_completion_stream__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_image_attachment__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_image_attachment__conversation_stream.snap index f75e68d04..3046d1d52 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_image_attachment__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_image_attachment__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_multi_turn_conversation__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_multi_turn_conversation__conversation_stream.snap index 914f96b8f..e46602361 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_multi_turn_conversation__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_multi_turn_conversation__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_structured_output__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_structured_output__conversation_stream.snap index 69b2cad7c..f65d45e5a 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_structured_output__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_structured_output__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_auto__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_auto__conversation_stream.snap index 14858b3e8..c09eafd2b 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_auto__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_auto__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_function__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_function__conversation_stream.snap index 7c58c15db..3e18243ee 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_function__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_function__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_reasoning__conversation_stream.snap index 1e71defd4..6cf9c697a 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_required_no_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_required_no_reasoning__conversation_stream.snap index 6d9d454f7..bb769b3e3 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_required_no_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_required_no_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_required_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_required_reasoning__conversation_stream.snap index bf36a9988..506d431dc 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_required_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_required_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_stream__conversation_stream.snap index 82517ff1d..64938c397 100644 --- a/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/llamacpp/test_tool_call_stream__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_chat_completion_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_chat_completion_stream__conversation_stream.snap index 780be5070..2374f4679 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_chat_completion_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_chat_completion_stream__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_image_attachment__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_image_attachment__conversation_stream.snap index 4adf26192..dfe62c83d 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_image_attachment__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_image_attachment__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_multi_turn_conversation__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_multi_turn_conversation__conversation_stream.snap index 6034df11e..8808f8f38 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_multi_turn_conversation__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_multi_turn_conversation__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_structured_output__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_structured_output__conversation_stream.snap index a26d90845..01b7b307d 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_structured_output__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_structured_output__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_auto__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_auto__conversation_stream.snap index 4867357e3..8fc03d46b 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_auto__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_auto__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_function__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_function__conversation_stream.snap index 42012d126..70f6800e7 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_function__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_function__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_reasoning__conversation_stream.snap index 4ec7fac72..1fe29738f 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_required_no_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_required_no_reasoning__conversation_stream.snap index 7d417e4b4..5db07b580 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_required_no_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_required_no_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_required_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_required_reasoning__conversation_stream.snap index 11ef56200..e34bb1471 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_required_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_required_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_stream__conversation_stream.snap index 9aa59033c..ce7653f8b 100644 --- a/crates/jp_llm/tests/fixtures/ollama/test_tool_call_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/ollama/test_tool_call_stream__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_chat_completion_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_chat_completion_stream__conversation_stream.snap index 5b81f8bb9..d141f34b5 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_chat_completion_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_chat_completion_stream__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_cache_off_sends_explicit_optout__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_cache_off_sends_explicit_optout__conversation_stream.snap index dd2581a7e..ea4f9beb1 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_cache_off_sends_explicit_optout__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_cache_off_sends_explicit_optout__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_pro_reasoning_and_explicit_caching__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_pro_reasoning_and_explicit_caching__conversation_stream.snap index 00c365278..fa2b03c87 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_pro_reasoning_and_explicit_caching__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_pro_reasoning_and_explicit_caching__conversation_stream.snap @@ -88,11 +88,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_prompt_cache_read_after_write__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_prompt_cache_read_after_write__conversation_stream.snap index 2fcabc42c..bd935df74 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_prompt_cache_read_after_write__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_gpt_5_6_prompt_cache_read_after_write__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_image_attachment__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_image_attachment__conversation_stream.snap index 8c01c530f..ed2ad9ea8 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_image_attachment__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_image_attachment__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_multi_turn_conversation__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_multi_turn_conversation__conversation_stream.snap index 8b3b7828e..38dbe41e4 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_multi_turn_conversation__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_multi_turn_conversation__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_reasoning_history_replayed_to_reasoning_unsupported_model__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_reasoning_history_replayed_to_reasoning_unsupported_model__conversation_stream.snap index 1c778907c..26a5f4908 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_reasoning_history_replayed_to_reasoning_unsupported_model__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_reasoning_history_replayed_to_reasoning_unsupported_model__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_structured_output__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_structured_output__conversation_stream.snap index ab93da729..8e571142b 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_structured_output__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_structured_output__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_tool_call_auto__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_tool_call_auto__conversation_stream.snap index d6f9d86a6..daa5499b0 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_tool_call_auto__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_tool_call_auto__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_tool_call_function__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_tool_call_function__conversation_stream.snap index 7974cfbe7..7bef856b4 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_tool_call_function__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_tool_call_function__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_tool_call_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_tool_call_reasoning__conversation_stream.snap index 6345cf600..e62eff582 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_tool_call_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_tool_call_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_tool_call_required_no_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_tool_call_required_no_reasoning__conversation_stream.snap index 851496e48..60b794df0 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_tool_call_required_no_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_tool_call_required_no_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_tool_call_required_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_tool_call_required_reasoning__conversation_stream.snap index a0bc24d49..0afc9aeb6 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_tool_call_required_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_tool_call_required_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openai/test_tool_call_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openai/test_tool_call_stream__conversation_stream.snap index 43f756e0c..de167a63b 100644 --- a/crates/jp_llm/tests/fixtures/openai/test_tool_call_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openai/test_tool_call_stream__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/anthropic_test_sub_provider_event_metadata__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/anthropic_test_sub_provider_event_metadata__conversation_stream.snap index 76133ae5a..0c59ece25 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/anthropic_test_sub_provider_event_metadata__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/anthropic_test_sub_provider_event_metadata__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/google_test_sub_provider_event_metadata__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/google_test_sub_provider_event_metadata__conversation_stream.snap index c426889ba..109aed8f7 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/google_test_sub_provider_event_metadata__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/google_test_sub_provider_event_metadata__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/minimax_test_sub_provider_event_metadata__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/minimax_test_sub_provider_event_metadata__conversation_stream.snap index 2b8c14b7e..8cc66df6e 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/minimax_test_sub_provider_event_metadata__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/minimax_test_sub_provider_event_metadata__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_anthropic_opus_5_parallel_tool_round_trip__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_anthropic_opus_5_parallel_tool_round_trip__conversation_stream.snap index 3bb600f23..4a3be74d4 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_anthropic_opus_5_parallel_tool_round_trip__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_anthropic_opus_5_parallel_tool_round_trip__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_chat_completion_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_chat_completion_stream__conversation_stream.snap index 766ab2b40..ed19f59f3 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_chat_completion_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_chat_completion_stream__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_image_attachment__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_image_attachment__conversation_stream.snap index e428ef8e5..6b2d3773b 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_image_attachment__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_image_attachment__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_multi_turn_conversation__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_multi_turn_conversation__conversation_stream.snap index 961482276..8bd961440 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_multi_turn_conversation__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_multi_turn_conversation__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_structured_output__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_structured_output__conversation_stream.snap index 934f56c16..438342100 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_structured_output__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_structured_output__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_auto__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_auto__conversation_stream.snap index c16440589..4f21d1bba 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_auto__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_auto__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_function__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_function__conversation_stream.snap index ff089c794..e87a0f890 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_function__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_function__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_reasoning__conversation_stream.snap index c292d2e27..677ae66e5 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_required_no_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_required_no_reasoning__conversation_stream.snap index 5bf81adb3..de352b6be 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_required_no_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_required_no_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_required_reasoning__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_required_reasoning__conversation_stream.snap index 1a1472eb0..2063a38f4 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_required_reasoning__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_required_reasoning__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_stream__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_stream__conversation_stream.snap index ddfc629a0..d8a26fed3 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_stream__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/test_tool_call_stream__conversation_stream.snap @@ -84,11 +84,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": { diff --git a/crates/jp_llm/tests/fixtures/openrouter/x-ai_test_sub_provider_event_metadata__conversation_stream.snap b/crates/jp_llm/tests/fixtures/openrouter/x-ai_test_sub_provider_event_metadata__conversation_stream.snap index 3451eed28..207254cc1 100644 --- a/crates/jp_llm/tests/fixtures/openrouter/x-ai_test_sub_provider_event_metadata__conversation_stream.snap +++ b/crates/jp_llm/tests/fixtures/openrouter/x-ai_test_sub_provider_event_metadata__conversation_stream.snap @@ -87,11 +87,6 @@ expression: v "strategy": "replace", "discard_when_merged": false }, - "labels": { - "value": {}, - "strategy": "replace", - "discard_when_merged": false - }, "start_local": false }, "style": {