Revert removal of /agent/prompt

This commit is contained in:
Tyler Longwell
2025-11-12 15:18:48 -05:00
parent b68fccdb8c
commit c4485fee4b
3 changed files with 97 additions and 1 deletions
+3
View File
@@ -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,
+32 -1
View File
@@ -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<Arc<AppState>>,
Json(payload): Json<ExtendPromptRequest>,
) -> Result<Json<ExtendPromptResponse>, 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<AppState>) -> 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(
+62
View File
@@ -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": [
{