[plugins] Fix plugin explicit mention context management. (#15372)
- [x] Fix plugin explicit mention context management.
This commit is contained in:
parent
e4eedd6170
commit
06e06ab173
2 changed files with 16 additions and 15 deletions
|
|
@ -5510,20 +5510,6 @@ pub(crate) async fn run_turn(
|
||||||
&available_connectors,
|
&available_connectors,
|
||||||
&skill_name_counts_lower,
|
&skill_name_counts_lower,
|
||||||
));
|
));
|
||||||
// Explicit plugin mentions can make a plugin's enabled apps callable for
|
|
||||||
// this turn without persisting those connectors as sticky user selections.
|
|
||||||
let mut turn_enabled_connectors = explicitly_enabled_connectors.clone();
|
|
||||||
turn_enabled_connectors.extend(
|
|
||||||
mentioned_plugins
|
|
||||||
.iter()
|
|
||||||
.flat_map(|plugin| plugin.app_connector_ids.iter())
|
|
||||||
.map(|connector_id| connector_id.0.clone())
|
|
||||||
.filter(|connector_id| {
|
|
||||||
available_connectors
|
|
||||||
.iter()
|
|
||||||
.any(|connector| connector.is_enabled && connector.id == *connector_id)
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
let connector_names_by_id = available_connectors
|
let connector_names_by_id = available_connectors
|
||||||
.iter()
|
.iter()
|
||||||
.map(|connector| (connector.id.as_str(), connector.name.as_str()))
|
.map(|connector| (connector.id.as_str(), connector.name.as_str()))
|
||||||
|
|
@ -5675,7 +5661,7 @@ pub(crate) async fn run_turn(
|
||||||
&mut client_session,
|
&mut client_session,
|
||||||
turn_metadata_header.as_deref(),
|
turn_metadata_header.as_deref(),
|
||||||
sampling_request_input,
|
sampling_request_input,
|
||||||
&turn_enabled_connectors,
|
&explicitly_enabled_connectors,
|
||||||
skills_outcome,
|
skills_outcome,
|
||||||
&mut server_model_warning_emitted_for_turn,
|
&mut server_model_warning_emitted_for_turn,
|
||||||
cancellation_token.child_token(),
|
cancellation_token.child_token(),
|
||||||
|
|
|
||||||
|
|
@ -641,6 +641,21 @@ fn filter_connectors_for_input_skips_disabled_connectors() {
|
||||||
assert_eq!(selected, Vec::new());
|
assert_eq!(selected, Vec::new());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn filter_connectors_for_input_skips_plugin_mentions() {
|
||||||
|
let connectors = vec![make_connector("figma", "Figma")];
|
||||||
|
let input = vec")];
|
||||||
|
let explicitly_enabled_connectors = HashSet::new();
|
||||||
|
let selected = filter_connectors_for_input(
|
||||||
|
&connectors,
|
||||||
|
&input,
|
||||||
|
&explicitly_enabled_connectors,
|
||||||
|
&HashMap::new(),
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(selected, Vec::new());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn collect_explicit_app_ids_from_skill_items_includes_linked_mentions() {
|
fn collect_explicit_app_ids_from_skill_items_includes_linked_mentions() {
|
||||||
let connectors = vec![make_connector("calendar", "Calendar")];
|
let connectors = vec![make_connector("calendar", "Calendar")];
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue