Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions crates/goose-sdk/src/custom_requests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,96 @@ pub struct ProviderConfigKey {
pub primary: bool,
}

#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigFieldValueDto {
pub key: String,
#[serde(default)]
pub value: Option<String>,
pub is_set: bool,
pub is_secret: bool,
pub required: bool,
}

#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigStatusDto {
pub provider_id: String,
pub is_configured: bool,
}

#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigFieldUpdate {
pub key: String,
pub value: String,
}

/// Read saved configuration field values for one provider.
#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcRequest)]
#[request(
method = "_goose/providers/config/read",
response = ProviderConfigReadResponse
)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigReadRequest {
pub provider_id: String,
}

#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcResponse)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigReadResponse {
pub fields: Vec<ProviderConfigFieldValueDto>,
}

/// Return provider configured statuses. Empty provider_ids means all providers.
#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcRequest)]
#[request(
method = "_goose/providers/config/status",
response = ProviderConfigStatusResponse
)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigStatusRequest {
#[serde(default)]
pub provider_ids: Vec<String>,
}

#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcResponse)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigStatusResponse {
pub statuses: Vec<ProviderConfigStatusDto>,
}

/// Save provider configuration fields and start an inventory refresh when supported.
#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcRequest)]
#[request(
method = "_goose/providers/config/save",
response = ProviderConfigChangeResponse
)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigSaveRequest {
pub provider_id: String,
pub fields: Vec<ProviderConfigFieldUpdate>,
}

/// Delete provider configuration fields and start an inventory refresh when supported.
#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcRequest)]
#[request(
method = "_goose/providers/config/delete",
response = ProviderConfigChangeResponse
)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigDeleteRequest {
pub provider_id: String,
}

#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcResponse)]
#[serde(rename_all = "camelCase")]
pub struct ProviderConfigChangeResponse {
pub status: ProviderConfigStatusDto,
pub refresh: RefreshProviderInventoryResponse,
}

/// The type of source entity.
#[derive(
Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, JsonSchema,
Expand Down
20 changes: 20 additions & 0 deletions crates/goose/acp-meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,26 @@
"requestType": "RefreshProviderInventoryRequest",
"responseType": "RefreshProviderInventoryResponse"
},
{
"method": "_goose/providers/config/read",
"requestType": "ProviderConfigReadRequest",
"responseType": "ProviderConfigReadResponse"
},
{
"method": "_goose/providers/config/status",
"requestType": "ProviderConfigStatusRequest",
"responseType": "ProviderConfigStatusResponse"
},
{
"method": "_goose/providers/config/save",
"requestType": "ProviderConfigSaveRequest",
"responseType": "ProviderConfigChangeResponse"
},
{
"method": "_goose/providers/config/delete",
"requestType": "ProviderConfigDeleteRequest",
"responseType": "ProviderConfigChangeResponse"
},
{
"method": "_goose/config/read",
"requestType": "ReadConfigRequest",
Expand Down
232 changes: 232 additions & 0 deletions crates/goose/acp-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,178 @@
"already_refreshing"
]
},
"ProviderConfigReadRequest": {
"type": "object",
"properties": {
"providerId": {
"type": "string"
}
},
"required": [
"providerId"
],
"description": "Read saved configuration field values for one provider.",
"x-side": "agent",
"x-method": "_goose/providers/config/read"
},
"ProviderConfigReadResponse": {
"type": "object",
"properties": {
"fields": {
"type": "array",
"items": {
"$ref": "#/$defs/ProviderConfigFieldValueDto"
}
}
},
"required": [
"fields"
],
"x-side": "agent",
"x-method": "_goose/providers/config/read"
},
"ProviderConfigFieldValueDto": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": [
"string",
"null"
],
"default": null
},
"isSet": {
"type": "boolean"
},
"isSecret": {
"type": "boolean"
},
"required": {
"type": "boolean"
}
},
"required": [
"key",
"isSet",
"isSecret",
"required"
]
},
"ProviderConfigStatusRequest": {
"type": "object",
"properties": {
"providerIds": {
"type": "array",
"items": {
"type": "string"
},
"default": []
}
},
"description": "Return provider configured statuses. Empty provider_ids means all providers.",
"x-side": "agent",
"x-method": "_goose/providers/config/status"
},
"ProviderConfigStatusResponse": {
"type": "object",
"properties": {
"statuses": {
"type": "array",
"items": {
"$ref": "#/$defs/ProviderConfigStatusDto"
}
}
},
"required": [
"statuses"
],
"x-side": "agent",
"x-method": "_goose/providers/config/status"
},
"ProviderConfigStatusDto": {
"type": "object",
"properties": {
"providerId": {
"type": "string"
},
"isConfigured": {
"type": "boolean"
}
},
"required": [
"providerId",
"isConfigured"
]
},
"ProviderConfigSaveRequest": {
"type": "object",
"properties": {
"providerId": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"$ref": "#/$defs/ProviderConfigFieldUpdate"
}
}
},
"required": [
"providerId",
"fields"
],
"description": "Save provider configuration fields and start an inventory refresh when supported.",
"x-side": "agent",
"x-method": "_goose/providers/config/save"
},
"ProviderConfigFieldUpdate": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"key",
"value"
]
},
"ProviderConfigChangeResponse": {
"type": "object",
"properties": {
"status": {
"$ref": "#/$defs/ProviderConfigStatusDto"
},
"refresh": {
"$ref": "#/$defs/RefreshProviderInventoryResponse"
}
},
"required": [
"status",
"refresh"
],
"x-side": "agent"
},
"ProviderConfigDeleteRequest": {
"type": "object",
"properties": {
"providerId": {
"type": "string"
}
},
"required": [
"providerId"
],
"description": "Delete provider configuration fields and start an inventory refresh when supported.",
"x-side": "agent",
"x-method": "_goose/providers/config/delete"
},
"ReadConfigRequest": {
"type": "object",
"properties": {
Expand Down Expand Up @@ -1519,6 +1691,42 @@
"description": "Params for _goose/providers/inventory/refresh",
"title": "RefreshProviderInventoryRequest"
},
{
"allOf": [
{
"$ref": "#/$defs/ProviderConfigReadRequest"
}
],
"description": "Params for _goose/providers/config/read",
"title": "ProviderConfigReadRequest"
},
{
"allOf": [
{
"$ref": "#/$defs/ProviderConfigStatusRequest"
}
],
"description": "Params for _goose/providers/config/status",
"title": "ProviderConfigStatusRequest"
},
{
"allOf": [
{
"$ref": "#/$defs/ProviderConfigSaveRequest"
}
],
"description": "Params for _goose/providers/config/save",
"title": "ProviderConfigSaveRequest"
},
{
"allOf": [
{
"$ref": "#/$defs/ProviderConfigDeleteRequest"
}
],
"description": "Params for _goose/providers/config/delete",
"title": "ProviderConfigDeleteRequest"
},
{
"allOf": [
{
Expand Down Expand Up @@ -1839,6 +2047,30 @@
],
"title": "RefreshProviderInventoryResponse"
},
{
"allOf": [
{
"$ref": "#/$defs/ProviderConfigReadResponse"
}
],
"title": "ProviderConfigReadResponse"
},
{
"allOf": [
{
"$ref": "#/$defs/ProviderConfigStatusResponse"
}
],
"title": "ProviderConfigStatusResponse"
},
{
"allOf": [
{
"$ref": "#/$defs/ProviderConfigChangeResponse"
}
],
"title": "ProviderConfigChangeResponse"
},
{
"allOf": [
{
Expand Down
Loading
Loading