diff --git a/crates/goose-sdk/src/custom_requests.rs b/crates/goose-sdk/src/custom_requests.rs index 69525bb1..d271509e 100644 --- a/crates/goose-sdk/src/custom_requests.rs +++ b/crates/goose-sdk/src/custom_requests.rs @@ -108,6 +108,37 @@ pub struct UpdateWorkingDirRequest { pub working_dir: String, } +/// How a session system prompt update should be applied. +#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum SessionSystemPromptMode { + /// Replace Goose's base system prompt with the provided text. + Set, + /// Append the provided text under Goose's "Additional Instructions" section. + #[default] + Append, +} + +/// Set, append, or clear system prompt text for a session. +/// +/// `mode: "set"` replaces Goose's base system prompt. `mode: "append"` adds an +/// instruction under "Additional Instructions". Reusing a key replaces the +/// previous value for that mode/key; sending empty text clears it. +#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcRequest)] +#[request( + method = "_goose/unstable/session/system-prompt/set", + response = EmptyResponse +)] +#[serde(rename_all = "camelCase")] +pub struct SetSessionSystemPromptRequest { + pub session_id: String, + #[serde(default)] + pub mode: SessionSystemPromptMode, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub key: Option, + pub text: String, +} + /// Delete a session. #[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcRequest)] #[request(method = "session/delete", response = EmptyResponse)] diff --git a/crates/goose/acp-meta.json b/crates/goose/acp-meta.json index 60893f10..04ecc8d5 100644 --- a/crates/goose/acp-meta.json +++ b/crates/goose/acp-meta.json @@ -30,6 +30,11 @@ "requestType": "UpdateWorkingDirRequest_unstable", "responseType": "EmptyResponse" }, + { + "method": "_goose/unstable/session/system-prompt/set", + "requestType": "SetSessionSystemPromptRequest_unstable", + "responseType": "EmptyResponse" + }, { "method": "session/delete", "requestType": "DeleteSessionRequest", diff --git a/crates/goose/acp-schema.json b/crates/goose/acp-schema.json index 63bf2b76..31ba1b5a 100644 --- a/crates/goose/acp-schema.json +++ b/crates/goose/acp-schema.json @@ -167,6 +167,49 @@ "x-side": "agent", "x-method": "_goose/unstable/session/working-dir/update" }, + "SetSessionSystemPromptRequest_unstable": { + "type": "object", + "properties": { + "sessionId": { + "type": "string" + }, + "mode": { + "$ref": "#/$defs/SessionSystemPromptMode", + "default": "append" + }, + "key": { + "type": [ + "string", + "null" + ] + }, + "text": { + "type": "string" + } + }, + "required": [ + "sessionId", + "text" + ], + "description": "Set, append, or clear system prompt text for a session.\n\n`mode: \"set\"` replaces Goose's base system prompt. `mode: \"append\"` adds an\ninstruction under \"Additional Instructions\". Reusing a key replaces the\nprevious value for that mode/key; sending empty text clears it.", + "x-side": "agent", + "x-method": "_goose/unstable/session/system-prompt/set" + }, + "SessionSystemPromptMode": { + "oneOf": [ + { + "type": "string", + "const": "set", + "description": "Replace Goose's base system prompt with the provided text." + }, + { + "type": "string", + "const": "append", + "description": "Append the provided text under Goose's \"Additional Instructions\" section." + } + ], + "description": "How a session system prompt update should be applied." + }, "DeleteSessionRequest": { "type": "object", "properties": { @@ -2640,6 +2683,15 @@ "description": "Params for _goose/unstable/session/working-dir/update", "title": "UpdateWorkingDirRequest_unstable" }, + { + "allOf": [ + { + "$ref": "#/$defs/SetSessionSystemPromptRequest_unstable" + } + ], + "description": "Params for _goose/unstable/session/system-prompt/set", + "title": "SetSessionSystemPromptRequest_unstable" + }, { "allOf": [ { diff --git a/crates/goose/src/acp/server/custom_dispatch.rs b/crates/goose/src/acp/server/custom_dispatch.rs index 9415aba2..f54d8547 100644 --- a/crates/goose/src/acp/server/custom_dispatch.rs +++ b/crates/goose/src/acp/server/custom_dispatch.rs @@ -59,6 +59,14 @@ impl GooseAcpAgent { self.on_update_working_dir(req).await } + #[custom_method(SetSessionSystemPromptRequest)] + async fn dispatch_set_session_system_prompt( + &self, + req: SetSessionSystemPromptRequest, + ) -> Result { + self.on_set_session_system_prompt(req).await + } + #[custom_method(DeleteSessionRequest)] async fn dispatch_delete_session( &self, diff --git a/crates/goose/src/acp/server/sessions.rs b/crates/goose/src/acp/server/sessions.rs index 02cb742e..e46a5e75 100644 --- a/crates/goose/src/acp/server/sessions.rs +++ b/crates/goose/src/acp/server/sessions.rs @@ -34,6 +34,47 @@ impl GooseAcpAgent { Ok(EmptyResponse {}) } + pub(super) async fn on_set_session_system_prompt( + &self, + req: SetSessionSystemPromptRequest, + ) -> Result { + let session_id = req.session_id.trim(); + if session_id.is_empty() { + return Err( + agent_client_protocol::Error::invalid_params().data("sessionId cannot be empty") + ); + } + + let agent = self.get_session_agent_provider_ready(session_id).await?; + match req.mode { + SessionSystemPromptMode::Set => { + if req.text.trim().is_empty() { + agent.clear_system_prompt_override().await; + } else { + agent.override_system_prompt(req.text).await; + } + } + SessionSystemPromptMode::Append => { + let key = req + .key + .as_deref() + .map(str::trim) + .filter(|key| !key.is_empty()) + .ok_or_else(|| { + agent_client_protocol::Error::invalid_params() + .data("key cannot be empty for append mode") + })?; + if req.text.trim().is_empty() { + agent.remove_system_prompt_extra(key).await; + } else { + agent.extend_system_prompt(key.to_string(), req.text).await; + } + } + } + + Ok(EmptyResponse {}) + } + pub(super) async fn on_delete_session( &self, req: DeleteSessionRequest, diff --git a/crates/goose/src/agents/agent.rs b/crates/goose/src/agents/agent.rs index 3ac741e6..7456ae0a 100644 --- a/crates/goose/src/agents/agent.rs +++ b/crates/goose/src/agents/agent.rs @@ -66,8 +66,7 @@ use tracing::{debug, error, info, instrument, warn}; const DEFAULT_MAX_TURNS: u32 = 1000; const COMPACTION_THINKING_TEXT: &str = "goose is compacting the conversation..."; -const DEFAULT_FRONTEND_INSTRUCTIONS: &str = - "The following tools are provided directly by the frontend and will be executed by the frontend when called."; +const DEFAULT_FRONTEND_INSTRUCTIONS: &str = "The following tools are provided directly by the frontend and will be executed by the frontend when called."; #[derive(Debug, Clone, Copy, PartialEq, Eq)] enum ToolCategory { @@ -2293,6 +2292,11 @@ impl Agent { prompt_manager.add_system_prompt_extra(key, instruction); } + pub async fn remove_system_prompt_extra(&self, key: &str) { + let mut prompt_manager = self.prompt_manager.lock().await; + prompt_manager.remove_system_prompt_extra(key); + } + pub async fn set_goal(&self, goal: Option) { *self.goal.lock().await = goal; } @@ -2463,6 +2467,11 @@ impl Agent { prompt_manager.set_system_prompt_override(template); } + pub async fn clear_system_prompt_override(&self) { + let mut prompt_manager = self.prompt_manager.lock().await; + prompt_manager.clear_system_prompt_override(); + } + pub async fn list_extension_prompts(&self, session_id: &str) -> HashMap> { self.extension_manager .list_prompts(session_id, CancellationToken::default()) diff --git a/crates/goose/src/agents/prompt_manager.rs b/crates/goose/src/agents/prompt_manager.rs index 6178b173..09b03212 100644 --- a/crates/goose/src/agents/prompt_manager.rs +++ b/crates/goose/src/agents/prompt_manager.rs @@ -224,6 +224,10 @@ impl PromptManager { self.system_prompt_extras.insert(key, instruction); } + pub fn remove_system_prompt_extra(&mut self, key: &str) { + self.system_prompt_extras.shift_remove(key); + } + pub fn record_tool_arguments( &mut self, arguments: &Option>, @@ -247,6 +251,10 @@ impl PromptManager { self.system_prompt_override = Some(template); } + pub fn clear_system_prompt_override(&mut self) { + self.system_prompt_override = None; + } + pub fn builder<'a>(&'a self) -> SystemPromptBuilder<'a, Self> { SystemPromptBuilder { manager: self, @@ -326,6 +334,29 @@ mod tests { assert!(result.contains("Thirdinstruction")); } + #[test] + fn test_remove_system_prompt_extra() { + let mut manager = PromptManager::new(); + manager.add_system_prompt_extra("agent".to_string(), "Agent instruction".to_string()); + manager.add_system_prompt_extra("project".to_string(), "Project instruction".to_string()); + + manager.remove_system_prompt_extra("agent"); + let result = manager.builder().build(); + + assert!(!result.contains("Agent instruction")); + assert!(result.contains("Project instruction")); + } + + #[test] + fn test_clear_system_prompt_override() { + let mut manager = PromptManager::new(); + manager.set_system_prompt_override("Replacement prompt".to_string()); + assert!(manager.builder().build().contains("Replacement prompt")); + + manager.clear_system_prompt_override(); + assert!(!manager.builder().build().contains("Replacement prompt")); + } + #[test] fn test_build_system_prompt_preserves_legitimate_unicode_in_extras() { let mut manager = PromptManager::new(); diff --git a/ui/sdk/src/generated/client.gen.ts b/ui/sdk/src/generated/client.gen.ts index 2bc08d2f..67b296cd 100644 --- a/ui/sdk/src/generated/client.gen.ts +++ b/ui/sdk/src/generated/client.gen.ts @@ -89,6 +89,7 @@ import type { RemoveConfigExtensionRequest_unstable, RemoveExtensionRequest_unstable, RenameSessionRequest_unstable, + SetSessionSystemPromptRequest_unstable, ToggleConfigExtensionRequest_unstable, UnarchiveSessionRequest_unstable, UpdateSessionProjectRequest_unstable, @@ -186,6 +187,15 @@ export class GooseExtClient { ); } + async sessionSystemPromptSet_unstable( + params: SetSessionSystemPromptRequest_unstable, + ): Promise { + await this.conn.extMethod( + "_goose/unstable/session/system-prompt/set", + params, + ); + } + async sessionDelete(params: DeleteSessionRequest): Promise { await this.conn.extMethod("session/delete", params); } diff --git a/ui/sdk/src/generated/index.ts b/ui/sdk/src/generated/index.ts index 701b2dd9..9bea10d7 100644 --- a/ui/sdk/src/generated/index.ts +++ b/ui/sdk/src/generated/index.ts @@ -1,6 +1,6 @@ // This file is auto-generated by @hey-api/openapi-ts -export type { AddConfigExtensionRequest_unstable, AddExtensionRequest_unstable, ArchiveSessionRequest_unstable, CreateSourceRequest_unstable, CreateSourceResponse_unstable, CustomProviderConfigDto, CustomProviderCreateRequest_unstable, CustomProviderCreateResponse_unstable, CustomProviderDeleteRequest_unstable, CustomProviderDeleteResponse_unstable, CustomProviderReadRequest_unstable, CustomProviderReadResponse_unstable, CustomProviderUpdateRequest_unstable, CustomProviderUpdateResponse_unstable, DefaultsReadRequest_unstable, DefaultsReadResponse_unstable, DefaultsSaveRequest_unstable, DeleteSessionRequest, DeleteSourceRequest_unstable, DictationConfigRequest_unstable, DictationConfigResponse_unstable, DictationDownloadProgress, DictationLocalModelStatus, DictationModelCancelRequest_unstable, DictationModelDeleteRequest_unstable, DictationModelDownloadProgressRequest_unstable, DictationModelDownloadProgressResponse_unstable, DictationModelDownloadRequest_unstable, DictationModelOption, DictationModelSelectRequest_unstable, DictationModelsListRequest_unstable, DictationModelsListResponse_unstable, DictationProviderStatusEntry, DictationSecretDeleteRequest_unstable, DictationSecretSaveRequest_unstable, DictationTranscribeRequest_unstable, DictationTranscribeResponse_unstable, EmptyResponse, ExportSessionRequest_unstable, ExportSessionResponse_unstable, ExportSourceRequest_unstable, ExportSourceResponse_unstable, ExtRequest, ExtResponse, GetExtensionsRequest_unstable, GetExtensionsResponse_unstable, GetSessionExtensionsRequest_unstable, GetSessionExtensionsResponse_unstable, GetToolsRequest_unstable, GetToolsResponse_unstable, GooseToolCallRequest_unstable, GooseToolCallResponse_unstable, ImportSessionRequest_unstable, ImportSessionResponse_unstable, ImportSourcesRequest_unstable, ImportSourcesResponse_unstable, ListProvidersRequest_unstable, ListProvidersResponse_unstable, ListSourcesRequest_unstable, ListSourcesResponse_unstable, OnboardingImportApplyRequest_unstable, OnboardingImportApplyResponse_unstable, OnboardingImportCandidate, OnboardingImportCounts, OnboardingImportScanRequest_unstable, OnboardingImportScanResponse_unstable, OnboardingImportSourceKind, PreferenceKey, PreferencesReadRequest_unstable, PreferencesReadResponse_unstable, PreferencesRemoveRequest_unstable, PreferencesSaveRequest_unstable, PreferenceValue, ProviderCatalogListRequest_unstable, ProviderCatalogListResponse_unstable, ProviderCatalogTemplateRequest_unstable, ProviderCatalogTemplateResponse_unstable, ProviderConfigAuthenticateRequest_unstable, ProviderConfigChangeResponse_unstable, ProviderConfigDeleteRequest_unstable, ProviderConfigFieldUpdate, ProviderConfigFieldValueDto, ProviderConfigKey, ProviderConfigReadRequest_unstable, ProviderConfigReadResponse_unstable, ProviderConfigSaveRequest_unstable, ProviderConfigStatusDto, ProviderConfigStatusRequest_unstable, ProviderConfigStatusResponse_unstable, ProviderInventoryEntryDto, ProviderInventoryModelDto, ProviderSetupCatalogEntryDto, ProviderSetupCatalogListRequest_unstable, ProviderSetupCatalogListResponse_unstable, ProviderSetupCategoryDto, ProviderSetupFieldDto, ProviderSetupGroupDto, ProviderSetupMethodDto, ProviderTemplateCapabilitiesDto, ProviderTemplateCatalogEntryDto, ProviderTemplateDto, ProviderTemplateModelDto, ReadResourceRequest_unstable, ReadResourceResponse_unstable, RefreshProviderInventoryRequest_unstable, RefreshProviderInventoryResponse_unstable, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigExtensionRequest_unstable, RemoveExtensionRequest_unstable, RenameSessionRequest_unstable, SourceEntry, SourceScope, SourceType, ToggleConfigExtensionRequest_unstable, UnarchiveSessionRequest_unstable, UpdateSessionProjectRequest_unstable, UpdateSourceRequest_unstable, UpdateSourceResponse_unstable, UpdateWorkingDirRequest_unstable } from './types.gen.js'; +export type { AddConfigExtensionRequest_unstable, AddExtensionRequest_unstable, ArchiveSessionRequest_unstable, CreateSourceRequest_unstable, CreateSourceResponse_unstable, CustomProviderConfigDto, CustomProviderCreateRequest_unstable, CustomProviderCreateResponse_unstable, CustomProviderDeleteRequest_unstable, CustomProviderDeleteResponse_unstable, CustomProviderReadRequest_unstable, CustomProviderReadResponse_unstable, CustomProviderUpdateRequest_unstable, CustomProviderUpdateResponse_unstable, DefaultsReadRequest_unstable, DefaultsReadResponse_unstable, DefaultsSaveRequest_unstable, DeleteSessionRequest, DeleteSourceRequest_unstable, DictationConfigRequest_unstable, DictationConfigResponse_unstable, DictationDownloadProgress, DictationLocalModelStatus, DictationModelCancelRequest_unstable, DictationModelDeleteRequest_unstable, DictationModelDownloadProgressRequest_unstable, DictationModelDownloadProgressResponse_unstable, DictationModelDownloadRequest_unstable, DictationModelOption, DictationModelSelectRequest_unstable, DictationModelsListRequest_unstable, DictationModelsListResponse_unstable, DictationProviderStatusEntry, DictationSecretDeleteRequest_unstable, DictationSecretSaveRequest_unstable, DictationTranscribeRequest_unstable, DictationTranscribeResponse_unstable, EmptyResponse, ExportSessionRequest_unstable, ExportSessionResponse_unstable, ExportSourceRequest_unstable, ExportSourceResponse_unstable, ExtRequest, ExtResponse, GetExtensionsRequest_unstable, GetExtensionsResponse_unstable, GetSessionExtensionsRequest_unstable, GetSessionExtensionsResponse_unstable, GetToolsRequest_unstable, GetToolsResponse_unstable, GooseToolCallRequest_unstable, GooseToolCallResponse_unstable, ImportSessionRequest_unstable, ImportSessionResponse_unstable, ImportSourcesRequest_unstable, ImportSourcesResponse_unstable, ListProvidersRequest_unstable, ListProvidersResponse_unstable, ListSourcesRequest_unstable, ListSourcesResponse_unstable, OnboardingImportApplyRequest_unstable, OnboardingImportApplyResponse_unstable, OnboardingImportCandidate, OnboardingImportCounts, OnboardingImportScanRequest_unstable, OnboardingImportScanResponse_unstable, OnboardingImportSourceKind, PreferenceKey, PreferencesReadRequest_unstable, PreferencesReadResponse_unstable, PreferencesRemoveRequest_unstable, PreferencesSaveRequest_unstable, PreferenceValue, ProviderCatalogListRequest_unstable, ProviderCatalogListResponse_unstable, ProviderCatalogTemplateRequest_unstable, ProviderCatalogTemplateResponse_unstable, ProviderConfigAuthenticateRequest_unstable, ProviderConfigChangeResponse_unstable, ProviderConfigDeleteRequest_unstable, ProviderConfigFieldUpdate, ProviderConfigFieldValueDto, ProviderConfigKey, ProviderConfigReadRequest_unstable, ProviderConfigReadResponse_unstable, ProviderConfigSaveRequest_unstable, ProviderConfigStatusDto, ProviderConfigStatusRequest_unstable, ProviderConfigStatusResponse_unstable, ProviderInventoryEntryDto, ProviderInventoryModelDto, ProviderSetupCatalogEntryDto, ProviderSetupCatalogListRequest_unstable, ProviderSetupCatalogListResponse_unstable, ProviderSetupCategoryDto, ProviderSetupFieldDto, ProviderSetupGroupDto, ProviderSetupMethodDto, ProviderTemplateCapabilitiesDto, ProviderTemplateCatalogEntryDto, ProviderTemplateDto, ProviderTemplateModelDto, ReadResourceRequest_unstable, ReadResourceResponse_unstable, RefreshProviderInventoryRequest_unstable, RefreshProviderInventoryResponse_unstable, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigExtensionRequest_unstable, RemoveExtensionRequest_unstable, RenameSessionRequest_unstable, SessionSystemPromptMode, SetSessionSystemPromptRequest_unstable, SourceEntry, SourceScope, SourceType, ToggleConfigExtensionRequest_unstable, UnarchiveSessionRequest_unstable, UpdateSessionProjectRequest_unstable, UpdateSourceRequest_unstable, UpdateSourceResponse_unstable, UpdateWorkingDirRequest_unstable } from './types.gen.js'; export const GOOSE_EXT_METHODS = [ { @@ -33,6 +33,11 @@ export const GOOSE_EXT_METHODS = [ requestType: "UpdateWorkingDirRequest_unstable", responseType: "EmptyResponse", }, + { + method: "_goose/unstable/session/system-prompt/set", + requestType: "SetSessionSystemPromptRequest_unstable", + responseType: "EmptyResponse", + }, { method: "session/delete", requestType: "DeleteSessionRequest", diff --git a/ui/sdk/src/generated/types.gen.ts b/ui/sdk/src/generated/types.gen.ts index e75ad791..08ec1ce2 100644 --- a/ui/sdk/src/generated/types.gen.ts +++ b/ui/sdk/src/generated/types.gen.ts @@ -90,6 +90,25 @@ export type UpdateWorkingDirRequest_unstable = { workingDir: string; }; +/** + * Set, append, or clear system prompt text for a session. + * + * `mode: "set"` replaces Goose's base system prompt. `mode: "append"` adds an + * instruction under "Additional Instructions". Reusing a key replaces the + * previous value for that mode/key; sending empty text clears it. + */ +export type SetSessionSystemPromptRequest_unstable = { + sessionId: string; + mode?: SessionSystemPromptMode; + key?: string | null; + text: string; +}; + +/** + * How a session system prompt update should be applied. + */ +export type SessionSystemPromptMode = 'set' | 'append'; + /** * Delete a session. */ @@ -1059,7 +1078,7 @@ export type DictationModelSelectRequest_unstable = { export type ExtRequest = { id: string; method: string; - params?: AddExtensionRequest_unstable | RemoveExtensionRequest_unstable | GetToolsRequest_unstable | GooseToolCallRequest_unstable | ReadResourceRequest_unstable | UpdateWorkingDirRequest_unstable | DeleteSessionRequest | GetExtensionsRequest_unstable | AddConfigExtensionRequest_unstable | RemoveConfigExtensionRequest_unstable | ToggleConfigExtensionRequest_unstable | GetSessionExtensionsRequest_unstable | ListProvidersRequest_unstable | ProviderCatalogListRequest_unstable | ProviderSetupCatalogListRequest_unstable | ProviderCatalogTemplateRequest_unstable | CustomProviderCreateRequest_unstable | CustomProviderReadRequest_unstable | CustomProviderUpdateRequest_unstable | CustomProviderDeleteRequest_unstable | RefreshProviderInventoryRequest_unstable | ProviderConfigReadRequest_unstable | ProviderConfigStatusRequest_unstable | ProviderConfigSaveRequest_unstable | ProviderConfigDeleteRequest_unstable | ProviderConfigAuthenticateRequest_unstable | PreferencesReadRequest_unstable | PreferencesSaveRequest_unstable | PreferencesRemoveRequest_unstable | DefaultsReadRequest_unstable | DefaultsSaveRequest_unstable | OnboardingImportScanRequest_unstable | OnboardingImportApplyRequest_unstable | ExportSessionRequest_unstable | ImportSessionRequest_unstable | UpdateSessionProjectRequest_unstable | RenameSessionRequest_unstable | ArchiveSessionRequest_unstable | UnarchiveSessionRequest_unstable | CreateSourceRequest_unstable | ListSourcesRequest_unstable | UpdateSourceRequest_unstable | DeleteSourceRequest_unstable | ExportSourceRequest_unstable | ImportSourcesRequest_unstable | DictationTranscribeRequest_unstable | DictationConfigRequest_unstable | DictationSecretSaveRequest_unstable | DictationSecretDeleteRequest_unstable | DictationModelsListRequest_unstable | DictationModelDownloadRequest_unstable | DictationModelDownloadProgressRequest_unstable | DictationModelCancelRequest_unstable | DictationModelDeleteRequest_unstable | DictationModelSelectRequest_unstable | { + params?: AddExtensionRequest_unstable | RemoveExtensionRequest_unstable | GetToolsRequest_unstable | GooseToolCallRequest_unstable | ReadResourceRequest_unstable | UpdateWorkingDirRequest_unstable | SetSessionSystemPromptRequest_unstable | DeleteSessionRequest | GetExtensionsRequest_unstable | AddConfigExtensionRequest_unstable | RemoveConfigExtensionRequest_unstable | ToggleConfigExtensionRequest_unstable | GetSessionExtensionsRequest_unstable | ListProvidersRequest_unstable | ProviderCatalogListRequest_unstable | ProviderSetupCatalogListRequest_unstable | ProviderCatalogTemplateRequest_unstable | CustomProviderCreateRequest_unstable | CustomProviderReadRequest_unstable | CustomProviderUpdateRequest_unstable | CustomProviderDeleteRequest_unstable | RefreshProviderInventoryRequest_unstable | ProviderConfigReadRequest_unstable | ProviderConfigStatusRequest_unstable | ProviderConfigSaveRequest_unstable | ProviderConfigDeleteRequest_unstable | ProviderConfigAuthenticateRequest_unstable | PreferencesReadRequest_unstable | PreferencesSaveRequest_unstable | PreferencesRemoveRequest_unstable | DefaultsReadRequest_unstable | DefaultsSaveRequest_unstable | OnboardingImportScanRequest_unstable | OnboardingImportApplyRequest_unstable | ExportSessionRequest_unstable | ImportSessionRequest_unstable | UpdateSessionProjectRequest_unstable | RenameSessionRequest_unstable | ArchiveSessionRequest_unstable | UnarchiveSessionRequest_unstable | CreateSourceRequest_unstable | ListSourcesRequest_unstable | UpdateSourceRequest_unstable | DeleteSourceRequest_unstable | ExportSourceRequest_unstable | ImportSourcesRequest_unstable | DictationTranscribeRequest_unstable | DictationConfigRequest_unstable | DictationSecretSaveRequest_unstable | DictationSecretDeleteRequest_unstable | DictationModelsListRequest_unstable | DictationModelDownloadRequest_unstable | DictationModelDownloadProgressRequest_unstable | DictationModelCancelRequest_unstable | DictationModelDeleteRequest_unstable | DictationModelSelectRequest_unstable | { [key: string]: unknown; } | null; }; diff --git a/ui/sdk/src/generated/zod.gen.ts b/ui/sdk/src/generated/zod.gen.ts index 300e478d..5ba310f4 100644 --- a/ui/sdk/src/generated/zod.gen.ts +++ b/ui/sdk/src/generated/zod.gen.ts @@ -80,6 +80,31 @@ export const zUpdateWorkingDirRequest_unstable = z.object({ workingDir: z.string() }); +/** + * How a session system prompt update should be applied. + */ +export const zSessionSystemPromptMode = z.union([ + z.literal('set'), + z.literal('append') +]); + +/** + * Set, append, or clear system prompt text for a session. + * + * `mode: "set"` replaces Goose's base system prompt. `mode: "append"` adds an + * instruction under "Additional Instructions". Reusing a key replaces the + * previous value for that mode/key; sending empty text clears it. + */ +export const zSetSessionSystemPromptRequest_unstable = z.object({ + sessionId: z.string(), + mode: zSessionSystemPromptMode.optional().default('append'), + key: z.union([ + z.string(), + z.null() + ]).optional(), + text: z.string() +}); + /** * Delete a session. */ @@ -1062,6 +1087,7 @@ export const zExtRequest = z.object({ zGooseToolCallRequest_unstable, zReadResourceRequest_unstable, zUpdateWorkingDirRequest_unstable, + zSetSessionSystemPromptRequest_unstable, zDeleteSessionRequest, zGetExtensionsRequest_unstable, zAddConfigExtensionRequest_unstable,