acp: Fix @mentions when remoting from Windows to Linux (#38882)
Closes #38620 `Url::from_file_path` and `Url::from_directory_path` assume the path style of the target they were compiled for, so we can't use them in general. So, switch from `file://` to encoding the absolute path (for mentions that have one) as a query parameter, which works no matter the platforms. We'll still parse the old `file://` mention URIs for compatibility with thread history. Release Notes: - windows: Fixed a crash when using `@mentions` in agent threads when remoting from Windows to Linux or WSL.
This commit is contained in:
@@ -1205,7 +1205,7 @@ mod tests {
|
||||
use acp_thread::{AgentConnection, AgentModelGroupName, AgentModelInfo, MentionUri};
|
||||
use fs::FakeFs;
|
||||
use gpui::TestAppContext;
|
||||
use indoc::indoc;
|
||||
use indoc::formatdoc;
|
||||
use language_model::fake_provider::FakeLanguageModel;
|
||||
use serde_json::json;
|
||||
use settings::SettingsStore;
|
||||
@@ -1502,13 +1502,17 @@ mod tests {
|
||||
summary_model.end_last_completion_stream();
|
||||
|
||||
send.await.unwrap();
|
||||
let uri = MentionUri::File {
|
||||
abs_path: path!("/a/b.md").into(),
|
||||
}
|
||||
.to_uri();
|
||||
acp_thread.read_with(cx, |thread, cx| {
|
||||
assert_eq!(
|
||||
thread.to_markdown(cx),
|
||||
indoc! {"
|
||||
formatdoc! {"
|
||||
## User
|
||||
|
||||
What does [@b.md](file:///a/b.md) mean?
|
||||
What does [@b.md]({uri}) mean?
|
||||
|
||||
## Assistant
|
||||
|
||||
@@ -1544,10 +1548,10 @@ mod tests {
|
||||
acp_thread.read_with(cx, |thread, cx| {
|
||||
assert_eq!(
|
||||
thread.to_markdown(cx),
|
||||
indoc! {"
|
||||
formatdoc! {"
|
||||
## User
|
||||
|
||||
What does [@b.md](file:///a/b.md) mean?
|
||||
What does [@b.md]({uri}) mean?
|
||||
|
||||
## Assistant
|
||||
|
||||
|
||||
Reference in New Issue
Block a user