Use the working dir from the session (#7285)

This commit is contained in:
Zane
2026-02-17 18:10:52 -08:00
committed by GitHub
parent e32720fcfb
commit 7eb4e442a7
6 changed files with 28 additions and 13 deletions
+9 -1
View File
@@ -1728,7 +1728,15 @@ impl Agent {
) -> Result<Recipe> {
tracing::info!("Starting recipe creation with {} messages", messages.len());
let extensions_info = self.extension_manager.get_extensions_info().await;
let session = self
.config
.session_manager
.get_session(session_id, false)
.await?;
let extensions_info = self
.extension_manager
.get_extensions_info(&session.working_dir)
.await;
tracing::debug!("Retrieved {} extensions info", extensions_info.len());
let (extension_count, tool_count) = self
.extension_manager
+6 -6
View File
@@ -791,17 +791,17 @@ impl ExtensionManager {
}
/// Get extensions info for building the system prompt
pub async fn get_extensions_info(&self) -> Vec<ExtensionInfo> {
pub async fn get_extensions_info(&self, working_dir: &std::path::Path) -> Vec<ExtensionInfo> {
let working_dir_str = working_dir.to_string_lossy();
self.extensions
.lock()
.await
.iter()
.map(|(name, ext)| {
ExtensionInfo::new(
name,
ext.get_instructions().unwrap_or_default().as_str(),
ext.supports_resources(),
)
let instructions = ext.get_instructions().unwrap_or_default();
let instructions =
instructions.replace(goose_mcp::WORKING_DIR_PLACEHOLDER, &working_dir_str);
ExtensionInfo::new(name, &instructions, ext.supports_resources())
})
.collect()
}
+4 -1
View File
@@ -164,7 +164,10 @@ impl Agent {
tools.sort_by(|a, b| a.name.cmp(&b.name));
// Prepare system prompt
let extensions_info = self.extension_manager.get_extensions_info().await;
let extensions_info = self
.extension_manager
.get_extensions_info(working_dir)
.await;
let (extension_count, tool_count) = self
.extension_manager
.get_extension_and_tool_counts(session_id)
+4 -1
View File
@@ -120,7 +120,10 @@ impl ProviderTester {
.await
.expect("get_prefixed_tools failed");
let info = self.extension_manager.get_extensions_info().await;
let info = self
.extension_manager
.get_extensions_info(std::path::Path::new("."))
.await;
let system = PromptManager::new()
.builder()
.with_extensions(info.into_iter())