@@ -577,6 +577,7 @@ fn get_or_npm_install_builtin_agent(
package_name: SharedString,
entrypoint_path: PathBuf,
minimum_version: Option<semver::Version>,
+ channel: &'static str,
status_tx: Option<watch::Sender<SharedString>>,
new_version_available: Option<watch::Sender<Option<String>>>,
fs: Arc<dyn Fs>,
@@ -648,9 +649,13 @@ fn get_or_npm_install_builtin_agent(
let dir = dir.clone();
let fs = fs.clone();
async move {
- let latest_version =
- node_runtime.npm_package_latest_version(&package_name).await;
- if let Ok(latest_version) = latest_version
+ // TODO remove the filter
+ let latest_version = node_runtime
+ .npm_package_latest_version(&package_name)
+ .await
+ .ok()
+ .filter(|_| channel == "latest");
+ if let Some(latest_version) = latest_version
&& &latest_version != &file_name.to_string_lossy()
{
let download_result = download_latest_version(
@@ -658,6 +663,7 @@ fn get_or_npm_install_builtin_agent(
dir.clone(),
node_runtime,
package_name.clone(),
+ channel,
)
.await
.log_err();
@@ -681,6 +687,7 @@ fn get_or_npm_install_builtin_agent(
dir.clone(),
node_runtime,
package_name.clone(),
+ channel,
))
.await?
.into()
@@ -729,13 +736,14 @@ async fn download_latest_version(
dir: PathBuf,
node_runtime: NodeRuntime,
package_name: SharedString,
+ channel: &'static str,
) -> Result<String> {
log::debug!("downloading latest version of {package_name}");
let tmp_dir = tempfile::tempdir_in(&dir)?;
node_runtime
- .npm_install_packages(tmp_dir.path(), &[(&package_name, "latest")])
+ .npm_install_packages(tmp_dir.path(), &[(&package_name, channel)])
.await?;
let version = node_runtime
@@ -878,7 +886,17 @@ impl ExternalAgentServer for LocalGemini {
GEMINI_NAME.into(),
"@google/gemini-cli".into(),
"node_modules/@google/gemini-cli/dist/index.js".into(),
- Some("0.2.1".parse().unwrap()),
+ // TODO remove these windows-specific workarounds once v0.9.0 stable is released
+ if cfg!(windows) {
+ Some("0.9.0-preview.4".parse().unwrap())
+ } else {
+ Some("0.2.1".parse().unwrap())
+ },
+ if cfg!(windows) {
+ "0.9.0-preview.4"
+ } else {
+ "latest"
+ },
status_tx,
new_version_available_tx,
fs,
@@ -962,6 +980,7 @@ impl ExternalAgentServer for LocalClaudeCode {
"@zed-industries/claude-code-acp".into(),
"node_modules/@zed-industries/claude-code-acp/dist/index.js".into(),
Some("0.5.2".parse().unwrap()),
+ "latest",
status_tx,
new_version_available_tx,
fs,