feat(#1082): add description() to ToolGroup + Capability; expose in API + UI tooltips
- hive-sh4re: ToolGroup::description() and Capability::description() return short human-readable strings for each variant - hive-c0re: ToolGroupsSnapshot and CapabilitiesSnapshot now include a `descriptions` map (name → description); get_capabilities now iterates Capability::ALL instead of hardcoding the list - tabs.js: renderToolGroups + renderCapabilities use descriptions[name] as the column header title attribute (native browser tooltip on hover)
This commit is contained in:
parent
4a632fabcc
commit
2368bec634
3 changed files with 62 additions and 6 deletions
|
|
@ -2512,6 +2512,8 @@ struct ToolGroupsSnapshot {
|
|||
/// Ordered list of all known tool-group names. Drives the column
|
||||
/// headers in the capabilities table — the UI does not hard-code them.
|
||||
groups: Vec<&'static str>,
|
||||
/// Short description for each group name. Keys match `groups` entries.
|
||||
descriptions: std::collections::BTreeMap<&'static str, &'static str>,
|
||||
/// Per-agent assignment map. Absent agents use the role default
|
||||
/// (agents: messaging+meta+inbox+execution; manager: all groups).
|
||||
assignments: std::collections::BTreeMap<String, Vec<String>>,
|
||||
|
|
@ -2522,9 +2524,14 @@ async fn get_tool_groups(State(_state): State<AppState>) -> axum::Json<ToolGroup
|
|||
.iter()
|
||||
.map(|g| g.as_str())
|
||||
.collect();
|
||||
let descriptions = hive_sh4re::ToolGroup::ALL
|
||||
.iter()
|
||||
.map(|g| (g.as_str(), g.description()))
|
||||
.collect();
|
||||
let assignments = crate::tool_groups::read();
|
||||
axum::Json(ToolGroupsSnapshot {
|
||||
groups,
|
||||
descriptions,
|
||||
assignments,
|
||||
})
|
||||
}
|
||||
|
|
@ -2566,14 +2573,25 @@ struct CapabilitiesSnapshot {
|
|||
/// Ordered list of all known capability names. Drives the column
|
||||
/// headers in the capabilities table — the UI does not hard-code them.
|
||||
caps: Vec<&'static str>,
|
||||
/// Short description for each capability name. Keys match `caps` entries.
|
||||
descriptions: std::collections::BTreeMap<&'static str, &'static str>,
|
||||
/// Per-agent capability grant map. Absent agents have no extra caps.
|
||||
assignments: std::collections::BTreeMap<String, Vec<String>>,
|
||||
}
|
||||
|
||||
async fn get_capabilities(State(_state): State<AppState>) -> axum::Json<CapabilitiesSnapshot> {
|
||||
let caps = hive_sh4re::Capability::ALL.iter().map(|c| c.as_str()).collect();
|
||||
use hive_sh4re::Capability;
|
||||
let caps = Capability::ALL.iter().map(|c| c.as_str()).collect();
|
||||
let descriptions = Capability::ALL
|
||||
.iter()
|
||||
.map(|c| (c.as_str(), c.description()))
|
||||
.collect();
|
||||
let assignments = crate::capabilities::read();
|
||||
axum::Json(CapabilitiesSnapshot { caps, assignments })
|
||||
axum::Json(CapabilitiesSnapshot {
|
||||
caps,
|
||||
descriptions,
|
||||
assignments,
|
||||
})
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
|
|
|||
Loading…
Reference in a new issue