context_servers: Add ability to provide labels for prompt outputs (#17077)
David Soria Parra
created 1 year ago
Server can now include an optional description in a `prompts/get`
response. Zed will displayed the description as label of the slash
command.
Release Notes:
- context_servers: Servers can provide an optional description in
`prompts/get` responses that is displayed as the slash command label.
Change summary
crates/assistant/src/slash_command/context_server_command.rs | 10 ++++-
crates/context_servers/src/protocol.rs | 4 +-
crates/context_servers/src/types.rs | 1
3 files changed, 10 insertions(+), 5 deletions(-)
Detailed changes
@@ -84,11 +84,15 @@ impl SlashCommand for ContextServerSlashCommand {
Ok(SlashCommandOutput {
sections: vec![SlashCommandOutputSection {
- range: 0..result.len(),
+ range: 0..(result.prompt.len()),
icon: IconName::ZedAssistant,
- label: SharedString::from(format!("Result from {}", prompt_name)),
+ label: SharedString::from(
+ result
+ .description
+ .unwrap_or(format!("Result from {}", prompt_name)),
+ ),
}],
- text: result,
+ text: result.prompt,
run_commands_in_text: false,
})
})
@@ -112,7 +112,7 @@ impl InitializedContextServerProtocol {
&self,
prompt: P,
arguments: HashMap<String, String>,
- ) -> Result<String> {
+ ) -> Result<types::PromptsGetResponse> {
self.check_capability(ServerCapability::Prompts)?;
let params = types::PromptsGetParams {
@@ -125,7 +125,7 @@ impl InitializedContextServerProtocol {
.request(types::RequestType::PromptsGet.as_str(), params)
.await?;
- Ok(response.prompt)
+ Ok(response)
}
}
@@ -102,6 +102,7 @@ pub struct ResourcesListResponse {
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PromptsGetResponse {
+ pub description: Option<String>,
pub prompt: String,
}