feat(automation): complete unified automation system redesign

Phase 4 completion:
- Add ApprovalQueue component for managing pending approvals
- Add ExecutionResult component for displaying hand/workflow results
- Update Sidebar navigation to use unified AutomationPanel
- Replace separate 'hands' and 'workflow' tabs with single 'automation' tab
- Fix TypeScript type safety issues with unknown types in JSX expressions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
iven
2026-03-18 17:12:05 +08:00
parent 3a7631e035
commit 3518fc8ece
74 changed files with 4984 additions and 687 deletions

View File

@@ -735,6 +735,7 @@ dependencies = [
"dirs 5.0.1",
"fantoccini",
"futures",
"keyring",
"regex",
"reqwest 0.11.27",
"serde",
@@ -2117,6 +2118,16 @@ dependencies = [
"unicode-segmentation",
]
[[package]]
name = "keyring"
version = "3.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c"
dependencies = [
"log",
"zeroize",
]
[[package]]
name = "kuchikiki"
version = "0.8.8-speedreader"
@@ -5913,6 +5924,12 @@ dependencies = [
"synstructure",
]
[[package]]
name = "zeroize"
version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
[[package]]
name = "zerotrie"
version = "0.2.3"

View File

@@ -35,3 +35,6 @@ base64 = "0.22"
thiserror = "2"
uuid = { version = "1", features = ["v4", "serde"] }
# Secure storage (OS keyring/keychain)
keyring = "3"

View File

@@ -15,6 +15,9 @@ mod llm;
// Browser automation module (Fantoccini-based Browser Hand)
mod browser;
// Secure storage module for OS keyring/keychain
mod secure_storage;
use serde::Serialize;
use serde_json::{json, Value};
use std::fs;
@@ -1066,7 +1069,12 @@ pub fn run() {
browser::commands::browser_element_screenshot,
browser::commands::browser_get_source,
browser::commands::browser_scrape_page,
browser::commands::browser_fill_form
browser::commands::browser_fill_form,
// Secure storage commands (OS keyring/keychain)
secure_storage::secure_store_set,
secure_storage::secure_store_get,
secure_storage::secure_store_delete,
secure_storage::secure_store_is_available
])
.run(tauri::generate_context!())
.expect("error while running tauri application");