tauri_plugin_askit/
lib.rs1use agent_stream_kit::ASKit;
2use tauri::{
3 plugin::{Builder, TauriPlugin},
4 Manager, RunEvent, Runtime,
5};
6
7mod commands;
8mod error;
9mod models;
10mod observer;
11
12pub use error::{Error, Result};
13pub use models::BoardMessage;
14
15use observer::BoardObserver;
16
17pub trait ASKitExt<R: Runtime> {
19 fn askit(&self) -> &ASKit;
20}
21
22impl<R: Runtime, T: Manager<R>> crate::ASKitExt<R> for T {
23 fn askit(&self) -> &ASKit {
24 self.state::<ASKit>().inner()
25 }
26}
27
28pub fn init<R: Runtime>() -> TauriPlugin<R> {
30 Builder::new("askit")
31 .invoke_handler(tauri::generate_handler![
32 commands::get_agent_definition,
33 commands::get_agent_definitions,
34 commands::get_agent_spec,
35 commands::get_agent_flows,
36 commands::new_agent_flow,
37 commands::rename_agent_flow,
38 commands::unique_flow_name,
39 commands::add_agent_flow,
40 commands::remove_agent_flow,
41 commands::insert_agent_flow,
42 commands::copy_sub_flow,
43 commands::start_agent_flow,
44 commands::stop_agent_flow,
45 commands::new_agent_flow_node,
46 commands::add_agent_flow_node,
47 commands::remove_agent_flow_node,
48 commands::add_agent_flow_edge,
49 commands::remove_agent_flow_edge,
50 commands::start_agent,
51 commands::stop_agent,
52 commands::write_board,
53 commands::set_agent_configs,
54 commands::get_global_configs,
55 commands::get_global_configs_map,
56 commands::set_global_configs,
57 commands::set_global_configs_map,
58 commands::get_agent_default_configs,
59 ])
60 .setup(|app, _api| {
61 let askit = ASKit::init()?;
62 askit.subscribe(Box::new(BoardObserver { app: app.clone() }));
63 app.manage(askit);
64 Ok(())
65 })
66 .on_event(|app, event| match event {
67 RunEvent::Ready => {
68 tauri::async_runtime::block_on(async move {
69 let askit = app.state::<ASKit>();
70 askit.ready().await.unwrap();
71 });
72 }
73 RunEvent::Exit => {
74 let askit = app.state::<ASKit>();
75 askit.quit();
76 }
77 _ => {}
78 })
79 .build()
80}