fix extension selector not displaying the correct enabled extensions (#7290)
This commit is contained in:
@@ -678,7 +678,7 @@ impl Agent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
match agent_ref
|
match agent_ref
|
||||||
.add_extension(config_clone, &session_id_clone)
|
.add_extension_inner(config_clone, &session_id_clone)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(_) => ExtensionLoadResult {
|
Ok(_) => ExtensionLoadResult {
|
||||||
@@ -700,13 +700,43 @@ impl Agent {
|
|||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
futures::future::join_all(extension_futures).await
|
let results = futures::future::join_all(extension_futures).await;
|
||||||
|
|
||||||
|
// Persist once after all extensions are loaded
|
||||||
|
if results.iter().any(|r| r.success) {
|
||||||
|
if let Err(e) = self.persist_extension_state(&session_id).await {
|
||||||
|
warn!("Failed to persist extension state after bulk load: {}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
results
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn add_extension(
|
pub async fn add_extension(
|
||||||
&self,
|
&self,
|
||||||
extension: ExtensionConfig,
|
extension: ExtensionConfig,
|
||||||
session_id: &str,
|
session_id: &str,
|
||||||
|
) -> ExtensionResult<()> {
|
||||||
|
self.add_extension_inner(extension, session_id).await?;
|
||||||
|
|
||||||
|
// Persist extension state after successful add
|
||||||
|
self.persist_extension_state(session_id)
|
||||||
|
.await
|
||||||
|
.map_err(|e| {
|
||||||
|
error!("Failed to persist extension state: {}", e);
|
||||||
|
crate::agents::extension::ExtensionError::SetupError(format!(
|
||||||
|
"Failed to persist extension state: {}",
|
||||||
|
e
|
||||||
|
))
|
||||||
|
})?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn add_extension_inner(
|
||||||
|
&self,
|
||||||
|
extension: ExtensionConfig,
|
||||||
|
session_id: &str,
|
||||||
) -> ExtensionResult<()> {
|
) -> ExtensionResult<()> {
|
||||||
let session = self
|
let session = self
|
||||||
.config
|
.config
|
||||||
@@ -760,17 +790,6 @@ impl Agent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Persist extension state after successful add
|
|
||||||
self.persist_extension_state(session_id)
|
|
||||||
.await
|
|
||||||
.map_err(|e| {
|
|
||||||
error!("Failed to persist extension state: {}", e);
|
|
||||||
crate::agents::extension::ExtensionError::SetupError(format!(
|
|
||||||
"Failed to persist extension state: {}",
|
|
||||||
e
|
|
||||||
))
|
|
||||||
})?;
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ export const BottomMenuExtensionSelection = ({ sessionId }: BottomMenuExtensionS
|
|||||||
const { extensionsList: allExtensions } = useConfig();
|
const { extensionsList: allExtensions } = useConfig();
|
||||||
const isHubView = !sessionId;
|
const isHubView = !sessionId;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setIsSessionExtensionsLoaded(false);
|
||||||
|
setSessionExtensions([]);
|
||||||
|
}, [sessionId]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleExtensionsLoaded = () => {
|
const handleExtensionsLoaded = () => {
|
||||||
setRefreshTrigger((prev) => prev + 1);
|
setRefreshTrigger((prev) => prev + 1);
|
||||||
@@ -53,8 +58,11 @@ export const BottomMenuExtensionSelection = ({ sessionId }: BottomMenuExtensionS
|
|||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Fetch session-specific extensions or use global defaults
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (refreshTrigger === 0 && !isOpen) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const fetchExtensions = async () => {
|
const fetchExtensions = async () => {
|
||||||
if (!sessionId) {
|
if (!sessionId) {
|
||||||
return;
|
return;
|
||||||
@@ -75,7 +83,6 @@ export const BottomMenuExtensionSelection = ({ sessionId }: BottomMenuExtensionS
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
setIsSessionExtensionsLoaded(false);
|
|
||||||
fetchExtensions();
|
fetchExtensions();
|
||||||
}, [sessionId, isOpen, refreshTrigger]);
|
}, [sessionId, isOpen, refreshTrigger]);
|
||||||
|
|
||||||
|
|||||||
@@ -433,6 +433,7 @@ export function useChatStream({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
window.dispatchEvent(new CustomEvent(AppEvents.SESSION_EXTENSIONS_LOADED));
|
||||||
onSessionLoaded?.();
|
onSessionLoaded?.();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user