From c4485fee4b9794bf69ce90a09ca1627a35380ffb Mon Sep 17 00:00:00 2001 From: Tyler Longwell Date: Wed, 12 Nov 2025 15:18:48 -0500 Subject: [PATCH] Revert removal of /agent/prompt --- crates/goose-server/src/openapi.rs | 3 ++ crates/goose-server/src/routes/agent.rs | 33 ++++++++++++- ui/desktop/openapi.json | 62 +++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) diff --git a/crates/goose-server/src/openapi.rs b/crates/goose-server/src/openapi.rs index b3f9aedb14..cc5baa8c5e 100644 --- a/crates/goose-server/src/openapi.rs +++ b/crates/goose-server/src/openapi.rs @@ -348,6 +348,7 @@ derive_utoipa!(Icon as IconSchema); super::routes::config_management::set_config_provider, super::routes::agent::start_agent, super::routes::agent::resume_agent, + super::routes::agent::extend_prompt, super::routes::agent::get_tools, super::routes::agent::update_from_session, super::routes::agent::agent_add_extension, @@ -493,6 +494,8 @@ derive_utoipa!(Icon as IconSchema); super::routes::agent::UpdateRouterToolSelectorRequest, super::routes::agent::StartAgentRequest, super::routes::agent::ResumeAgentRequest, + super::routes::agent::ExtendPromptRequest, + super::routes::agent::ExtendPromptResponse, super::routes::agent::UpdateFromSessionRequest, super::routes::agent::AddExtensionRequest, super::routes::agent::RemoveExtensionRequest, diff --git a/crates/goose-server/src/routes/agent.rs b/crates/goose-server/src/routes/agent.rs index 90c6db9a51..d0516ff8bc 100644 --- a/crates/goose-server/src/routes/agent.rs +++ b/crates/goose-server/src/routes/agent.rs @@ -25,7 +25,7 @@ use goose::{ agents::{extension::ToolInfo, extension_manager::get_parameter_names}, config::permission::PermissionLevel, }; -use serde::Deserialize; +use serde::{Deserialize, Serialize}; use serde_json::Value; use std::collections::HashMap; use std::path::PathBuf; @@ -33,6 +33,17 @@ use std::sync::atomic::Ordering; use std::sync::Arc; use tracing::{error, warn}; +#[derive(Deserialize, utoipa::ToSchema)] +pub struct ExtendPromptRequest { + extension: String, + session_id: String, +} + +#[derive(Serialize, Deserialize, utoipa::ToSchema)] +pub struct ExtendPromptResponse { + success: bool, +} + #[derive(Deserialize, utoipa::ToSchema)] pub struct UpdateFromSessionRequest { session_id: String, @@ -329,6 +340,25 @@ async fn update_from_session( Ok(StatusCode::OK) } +#[utoipa::path( + post, + path = "/agent/prompt", + request_body = ExtendPromptRequest, + responses( + (status = 200, description = "Extended system prompt successfully", body = ExtendPromptResponse), + (status = 401, description = "Unauthorized - invalid secret key"), + (status = 424, description = "Agent not initialized"), + ), +)] +async fn extend_prompt( + State(state): State>, + Json(payload): Json, +) -> Result, StatusCode> { + let agent = state.get_agent_for_route(payload.session_id).await?; + agent.extend_system_prompt(payload.extension).await; + Ok(Json(ExtendPromptResponse { success: true })) +} + #[utoipa::path( get, path = "/agent/tools", @@ -554,6 +584,7 @@ pub fn routes(state: Arc) -> Router { Router::new() .route("/agent/start", post(start_agent)) .route("/agent/resume", post(resume_agent)) + .route("/agent/prompt", post(extend_prompt)) .route("/agent/tools", get(get_tools)) .route("/agent/update_provider", post(update_agent_provider)) .route( diff --git a/ui/desktop/openapi.json b/ui/desktop/openapi.json index fd45570d58..a1b2713ff0 100644 --- a/ui/desktop/openapi.json +++ b/ui/desktop/openapi.json @@ -52,6 +52,42 @@ } } }, + "/agent/prompt": { + "post": { + "tags": [ + "super::routes::agent" + ], + "operationId": "extend_prompt", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtendPromptRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Extended system prompt successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExtendPromptResponse" + } + } + } + }, + "401": { + "description": "Unauthorized - invalid secret key" + }, + "424": { + "description": "Agent not initialized" + } + } + } + }, "/agent/remove_extension": { "post": { "tags": [ @@ -2513,6 +2549,32 @@ } } }, + "ExtendPromptRequest": { + "type": "object", + "required": [ + "extension", + "session_id" + ], + "properties": { + "extension": { + "type": "string" + }, + "session_id": { + "type": "string" + } + } + }, + "ExtendPromptResponse": { + "type": "object", + "required": [ + "success" + ], + "properties": { + "success": { + "type": "boolean" + } + } + }, "ExtensionConfig": { "oneOf": [ {