Skip to content

Commit 689ee8f

Browse files
authored
fix(agent): project available commands in management rows (#579)
## Summary - Add `available_commands` to the `AgentManagementRow` API payload. - Project persisted handshake available command catalogs through management rows and by-id reads. - Extend registry coverage and update test row builders for the new field. ## Test Plan - `cargo test -p aionui-ai-agent management_rows_project_runtime_catalogs_from_agent_metadata` - `cargo test -p aionui-api-types` - `cargo test -p aionui-assistant list_maps_generated_definition_to_generated_source` - `cargo test -p aionui-app management_endpoint_keeps_deprecated_runtime_rows_for_diagnostics` - `cargo fmt --all -- --check` - `git diff --check` - `just push -u origin fix/management-available-commands` --------- Co-authored-by: zk <>
1 parent 5b7c366 commit 689ee8f

5 files changed

Lines changed: 13 additions & 1 deletion

File tree

crates/aionui-ai-agent/src/registry.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ impl AgentRegistry {
358358
config_options: handshake.config_options.clone(),
359359
available_modes: handshake.available_modes.clone(),
360360
available_models: handshake.available_models.clone(),
361+
available_commands: handshake.available_commands.clone(),
361362
sort_order: meta.sort_order,
362363
team_capable: meta.team_capable,
363364
status,
@@ -408,6 +409,7 @@ impl AgentRegistry {
408409
config_options: handshake.config_options.clone(),
409410
available_modes: handshake.available_modes.clone(),
410411
available_models: handshake.available_models.clone(),
412+
available_commands: handshake.available_commands.clone(),
411413
sort_order: meta.sort_order,
412414
team_capable: meta.team_capable,
413415
status,

crates/aionui-ai-agent/src/registry_tests.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,9 @@ async fn management_rows_project_runtime_catalogs_from_agent_metadata() {
357357
available_models: Some(
358358
r#"{"current_model_id":"claude-opus","current_model_label":"Claude Opus","available_models":[{"id":"claude-opus","label":"Claude Opus"}]}"#,
359359
),
360-
available_commands: None,
360+
available_commands: Some(
361+
r#"{"available_commands":[{"name":"review","description":"Review the current diff"}]}"#,
362+
),
361363
sort_order: 100,
362364
})
363365
.await
@@ -383,6 +385,10 @@ async fn management_rows_project_runtime_catalogs_from_agent_metadata() {
383385
row_json["config_options"]["config_options"][0]["current_value"].as_str(),
384386
Some("claude-opus")
385387
);
388+
assert_eq!(
389+
row_json["available_commands"]["available_commands"][0]["name"].as_str(),
390+
Some("review")
391+
);
386392
}
387393

388394
#[tokio::test]

crates/aionui-api-types/src/agent_discovery.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,8 @@ pub struct AgentManagementRow {
284284
pub available_modes: Option<serde_json::Value>,
285285
#[serde(default, skip_serializing_if = "Option::is_none")]
286286
pub available_models: Option<serde_json::Value>,
287+
#[serde(default, skip_serializing_if = "Option::is_none")]
288+
pub available_commands: Option<serde_json::Value>,
287289
pub sort_order: i64,
288290
#[serde(default)]
289291
pub team_capable: bool,

crates/aionui-app/tests/assistants_e2e.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ fn test_agent_row(id: &str, backend: Option<&str>, agent_type: AgentType, name:
9999
config_options: None,
100100
available_modes: None,
101101
available_models: None,
102+
available_commands: None,
102103
sort_order: 0,
103104
team_capable: true,
104105
status: AgentManagementStatus::Online,

crates/aionui-assistant/src/service.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3015,6 +3015,7 @@ mod tests {
30153015
config_options: None,
30163016
available_modes: None,
30173017
available_models: None,
3018+
available_commands: None,
30183019
sort_order: 3100,
30193020
team_capable: true,
30203021
status,

0 commit comments

Comments
 (0)