| Crates.io | widget_intelligence |
| lib.rs | widget_intelligence |
| version | 2.0.0 |
| created_at | 2025-07-12 11:25:49.217548+00 |
| updated_at | 2025-07-20 05:37:28.778004+00 |
| description | A Rust library for intelligent Kyma widget suggestion and learning |
| homepage | |
| repository | https://github.com/cristianvogel/widget_intelligence |
| max_upload_size | |
| id | 1749207 |
| size | 249,287 |
A Rust library for intelligent widget suggestion and learning based on user behavior patterns.
Used in production https://neverenginelabs.com/products/nel-vcs-player
Add this to your Cargo.toml:
[dependencies]
widget_intelligence = "0.1"
The Widget Intelligence system has been simplified to focus on the following use case:
use widget_intelligence::*;
// Create a new suggestion engine
let mut engine = WidgetSuggestionEngine::new();
// Register a widget with Label, EventId, and values
let widget = Widget::simplified(
Some("Volume".to_string()),
Some(101),
vec![0.7, 0.8, 0.75]
);
engine.store_widget(widget);
// Add more values to an existing widget
let widget_update = Widget::simplified(
Some("Volume".to_string()),
Some(101),
vec![0.65, 0.85]
);
engine.store_widget(widget_update);
// Query for a suggested value by EventId
let suggestions = engine.get_suggestions_by_event_id(101, 1);
if let Some(suggestion) = suggestions.first() {
println!("Suggested value: {:?}", suggestion.suggested_value);
println!("Alternative values: {:?}", suggestion.alternative_values);
}
// Query for a suggested value by Label
let query_widget = Widget::simplified(
Some("Volume".to_string()),
None,
vec![]
);
let suggestions = engine.get_suggestions(&query_widget, 1);
if let Some(suggestion) = suggestions.first() {
println!("Suggested value: {:?}", suggestion.suggested_value);
println!("Alternative values: {:?}", suggestion.alternative_values);
}
For persistent storage, use the PersistentWidgetSuggestionEngine:
// Initialize with a database path
let mut system = init_intelligence_system("widget_db")?;
// Register widgets and get suggestions as above
let widget = Widget::simplified(
Some("Volume".to_string()),
Some(101),
vec![0.7, 0.8, 0.75]
);
system.store_widget(widget)?;
// Flush changes to disk
system.flush()?;