Use extension-llm- prefix for credential keys

Richard Feldman created

Change summary

crates/extension_host/src/wasm_host/wit/since_v0_7_0.rs | 31 +++++++---
1 file changed, 20 insertions(+), 11 deletions(-)

Detailed changes

crates/extension_host/src/wasm_host/wit/since_v0_7_0.rs 🔗

@@ -13,6 +13,7 @@ use anyhow::{Context as _, Result, bail};
 use async_compression::futures::bufread::GzipDecoder;
 use async_tar::Archive;
 use async_trait::async_trait;
+use credentials_provider::CredentialsProvider;
 use extension::{
     ExtensionLanguageServerProxy, KeyValueStoreDelegate, ProjectDelegate, WorktreeDelegate,
 };
@@ -1132,12 +1133,16 @@ impl ExtensionImports for WasmState {
         provider_id: String,
     ) -> wasmtime::Result<Option<String>> {
         let extension_id = self.manifest.id.clone();
-        let credential_key = format!("{}:{}", extension_id, provider_id);
+        let credential_key = format!("extension-llm-{}:{}", extension_id, provider_id);
 
         self.on_main_thread(move |cx| {
             async move {
-                let task = cx.update(|cx| cx.read_credentials(&credential_key))?;
-                let result = task.await.ok().flatten();
+                let credentials_provider = cx.update(|cx| <dyn CredentialsProvider>::global(cx))?;
+                let result = credentials_provider
+                    .read_credentials(&credential_key, cx)
+                    .await
+                    .ok()
+                    .flatten();
                 Ok(result.map(|(_, password)| String::from_utf8_lossy(&password).to_string()))
             }
             .boxed_local()
@@ -1151,14 +1156,15 @@ impl ExtensionImports for WasmState {
         value: String,
     ) -> wasmtime::Result<Result<(), String>> {
         let extension_id = self.manifest.id.clone();
-        let credential_key = format!("{}:{}", extension_id, provider_id);
+        let credential_key = format!("extension-llm-{}:{}", extension_id, provider_id);
 
         self.on_main_thread(move |cx| {
             async move {
-                let task = cx.update(|cx| {
-                    cx.write_credentials(&credential_key, "api_key", value.as_bytes())
-                })?;
-                task.await.map_err(|e| anyhow::anyhow!("{}", e))
+                let credentials_provider = cx.update(|cx| <dyn CredentialsProvider>::global(cx))?;
+                credentials_provider
+                    .write_credentials(&credential_key, "api_key", value.as_bytes(), cx)
+                    .await
+                    .map_err(|e| anyhow::anyhow!("{}", e))
             }
             .boxed_local()
         })
@@ -1171,12 +1177,15 @@ impl ExtensionImports for WasmState {
         provider_id: String,
     ) -> wasmtime::Result<Result<(), String>> {
         let extension_id = self.manifest.id.clone();
-        let credential_key = format!("{}:{}", extension_id, provider_id);
+        let credential_key = format!("extension-llm-{}:{}", extension_id, provider_id);
 
         self.on_main_thread(move |cx| {
             async move {
-                let task = cx.update(|cx| cx.delete_credentials(&credential_key))?;
-                task.await.map_err(|e| anyhow::anyhow!("{}", e))
+                let credentials_provider = cx.update(|cx| <dyn CredentialsProvider>::global(cx))?;
+                credentials_provider
+                    .delete_credentials(&credential_key, cx)
+                    .await
+                    .map_err(|e| anyhow::anyhow!("{}", e))
             }
             .boxed_local()
         })