(
counts: &mut BTreeMap<(String, String), i64>,
event_kind: &str,
tool_name: &str,
skill_name: &str,
metadata_json: &str,
)
| 333 | } |
| 334 | |
| 335 | fn record_event_usage( |
| 336 | counts: &mut BTreeMap<(String, String), i64>, |
| 337 | event_kind: &str, |
| 338 | tool_name: &str, |
| 339 | skill_name: &str, |
| 340 | metadata_json: &str, |
| 341 | ) { |
| 342 | let inferred = match event_kind { |
| 343 | "tool" | "mcp_tool_call" => infer_usage_events(Some(tool_name), Some(metadata_json), None), |
| 344 | "skill" => infer_usage_events(None, Some(metadata_json), Some(skill_name)), |
| 345 | _ => Vec::new(), |
| 346 | }; |
| 347 | |
| 348 | if inferred.is_empty() { |
| 349 | record_fallback_usage(counts, event_kind, skill_name); |
| 350 | return; |
| 351 | } |
| 352 | |
| 353 | for event in inferred { |
| 354 | record_usage_count(counts, event.kind, event.category.dashboard_label()); |
| 355 | } |
| 356 | } |
| 357 | |
| 358 | fn record_fallback_usage( |
| 359 | counts: &mut BTreeMap<(String, String), i64>, |
no test coverage detected