feat: add plugin system with sandboxed runtime
Plugin discovery from ~/.config/bterminal/plugins/ with plugin.json manifest. Sandboxed new Function() execution, permission-gated API (palette, btmsg:read, bttask:read, events). Plugin store + SettingsTab.
This commit is contained in:
parent
5dd7df03cb
commit
b2932273ba
4 changed files with 510 additions and 0 deletions
20
v2/src-tauri/src/commands/plugins.rs
Normal file
20
v2/src-tauri/src/commands/plugins.rs
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
// Plugin discovery and file access commands
|
||||
|
||||
use crate::AppState;
|
||||
use crate::plugins;
|
||||
|
||||
#[tauri::command]
|
||||
pub fn plugins_discover(state: tauri::State<'_, AppState>) -> Vec<plugins::PluginMeta> {
|
||||
let plugins_dir = state.app_config.plugins_dir();
|
||||
plugins::discover_plugins(&plugins_dir)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn plugin_read_file(
|
||||
state: tauri::State<'_, AppState>,
|
||||
plugin_id: String,
|
||||
filename: String,
|
||||
) -> Result<String, String> {
|
||||
let plugins_dir = state.app_config.plugins_dir();
|
||||
plugins::read_plugin_file(&plugins_dir, &plugin_id, &filename)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue