diff --git a/crates/dbx-core/assets/agent-protocol-v1.json b/crates/dbx-core/assets/agent-protocol-v1.json index 4f4887954..ada128177 100644 --- a/crates/dbx-core/assets/agent-protocol-v1.json +++ b/crates/dbx-core/assets/agent-protocol-v1.json @@ -1,8 +1,39 @@ { "protocolVersion": 1, "handshakeMethod": "handshake", - "handshakeResponseFields": ["protocolVersion", "agentProtocolVersion", "capabilities"], - "capabilities": ["connect", "test_connection", "metadata", "query", "paged_query", "transaction", "ddl", "kv"], + "handshakeResponseFields": [ + "protocolVersion", + "agentProtocolVersion", + "capabilities" + ], + "allCapabilities": [ + "connect", + "test_connection", + "metadata", + "query", + "paged_query", + "transaction", + "ddl", + "kv" + ], + "capabilities": [ + "connect", + "test_connection", + "metadata", + "query", + "paged_query", + "transaction", + "ddl" + ], + "defaultSqlCapabilities": [ + "connect", + "test_connection", + "metadata", + "query", + "paged_query", + "transaction", + "ddl" + ], "commonMethods": [ "handshake", "connect", @@ -26,6 +57,18 @@ "disconnect", "shutdown" ], - "mongoLegacyMethods": ["list_databases", "list_collections", "find_documents", "insert_document", "update_document", "delete_document"], - "kvMethods": ["kv_list_prefix", "kv_get", "kv_put", "kv_delete"] + "mongoLegacyMethods": [ + "list_databases", + "list_collections", + "find_documents", + "insert_document", + "update_document", + "delete_document" + ], + "kvMethods": [ + "kv_list_prefix", + "kv_get", + "kv_put", + "kv_delete" + ] } diff --git a/crates/dbx-core/src/db/agent_driver.rs b/crates/dbx-core/src/db/agent_driver.rs index bd6437dfc..f669e5f47 100644 --- a/crates/dbx-core/src/db/agent_driver.rs +++ b/crates/dbx-core/src/db/agent_driver.rs @@ -1243,9 +1243,11 @@ mod tests { vec!["protocolVersion", "agentProtocolVersion", "capabilities"] ); assert_eq!( - string_array(&contract["capabilities"]), + string_array(&contract["allCapabilities"]), AgentCapability::ALL.iter().map(|method| method.as_str()).collect::>() ); + assert_eq!(string_array(&contract["capabilities"]), default_sql_capabilities()); + assert_eq!(string_array(&contract["defaultSqlCapabilities"]), default_sql_capabilities()); assert_eq!( string_array(&contract["commonMethods"]), AgentMethod::ALL.iter().map(|method| method.as_str()).collect::>() @@ -1298,4 +1300,19 @@ mod tests { fn string_array(value: &serde_json::Value) -> Vec<&str> { value.as_array().unwrap().iter().map(|item| item.as_str().unwrap()).collect() } + + fn default_sql_capabilities() -> Vec<&'static str> { + [ + AgentCapability::Connect, + AgentCapability::TestConnection, + AgentCapability::Metadata, + AgentCapability::Query, + AgentCapability::PagedQuery, + AgentCapability::Transaction, + AgentCapability::Ddl, + ] + .iter() + .map(|capability| capability.as_str()) + .collect() + } }