feat: add main features
Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
This commit is contained in:
103
crates/app-tauri/src/lib.rs
Normal file
103
crates/app-tauri/src/lib.rs
Normal file
@ -0,0 +1,103 @@
|
||||
//! # IdeA — `app-tauri` (presentation / driving adapter + composition root)
|
||||
//!
|
||||
//! This crate is the **only** place that knows every other crate. It:
|
||||
//! - builds the concrete adapters and injects them into use cases
|
||||
//! ([`state::AppState`], the composition root),
|
||||
//! - exposes `#[tauri::command]` handlers ([`commands`]) mapping DTOs ↔ use cases,
|
||||
//! - relays domain events to the frontend ([`events::TauriEventRelay`]),
|
||||
//! - hosts the generic PTY↔Channel bridge ([`pty::PtyBridge`]) for L3.
|
||||
//!
|
||||
//! The wiring lives in the library (testable) and `main.rs` is a thin shim.
|
||||
|
||||
#![forbid(unsafe_code)]
|
||||
#![warn(missing_docs)]
|
||||
|
||||
pub mod commands;
|
||||
pub mod dto;
|
||||
pub mod events;
|
||||
pub mod pty;
|
||||
pub mod state;
|
||||
|
||||
use tauri::Manager;
|
||||
|
||||
use state::AppState;
|
||||
|
||||
/// Builds and runs the Tauri application.
|
||||
///
|
||||
/// Sets up the composition root (resolving the app-data directory via the Tauri
|
||||
/// path API), registers commands, spawns the event relay, and starts the main
|
||||
/// window.
|
||||
///
|
||||
/// # Panics
|
||||
/// Panics if the Tauri application fails to build or run (no window/webview), or
|
||||
/// if the app-data directory cannot be resolved.
|
||||
pub fn run() {
|
||||
tauri::Builder::default()
|
||||
.plugin(tauri_plugin_dialog::init())
|
||||
.setup(|app| {
|
||||
// Resolve the machine-local IDE data directory (ARCHITECTURE §9.2)
|
||||
// and build the composition root once the app handle exists, so the
|
||||
// stores receive a concrete path without ever touching Tauri.
|
||||
let app_data_dir = app
|
||||
.path()
|
||||
.app_data_dir()
|
||||
.expect("failed to resolve the app data directory");
|
||||
let app_state = AppState::build(app_data_dir);
|
||||
|
||||
// Wire the domain event bus → Tauri events relay.
|
||||
events::spawn_relay(app.handle().clone(), &app_state.event_bus);
|
||||
|
||||
app.manage(app_state);
|
||||
Ok(())
|
||||
})
|
||||
.invoke_handler(tauri::generate_handler![
|
||||
commands::health,
|
||||
commands::create_project,
|
||||
commands::open_project,
|
||||
commands::close_project,
|
||||
commands::list_projects,
|
||||
commands::open_terminal,
|
||||
commands::write_terminal,
|
||||
commands::resize_terminal,
|
||||
commands::close_terminal,
|
||||
commands::load_layout,
|
||||
commands::mutate_layout,
|
||||
commands::list_layouts,
|
||||
commands::create_layout,
|
||||
commands::rename_layout,
|
||||
commands::delete_layout,
|
||||
commands::set_active_layout,
|
||||
commands::first_run_state,
|
||||
commands::reference_profiles,
|
||||
commands::detect_profiles,
|
||||
commands::list_profiles,
|
||||
commands::save_profile,
|
||||
commands::delete_profile,
|
||||
commands::configure_profiles,
|
||||
commands::create_agent,
|
||||
commands::list_agents,
|
||||
commands::read_agent_context,
|
||||
commands::update_agent_context,
|
||||
commands::delete_agent,
|
||||
commands::launch_agent,
|
||||
commands::create_template,
|
||||
commands::update_template,
|
||||
commands::list_templates,
|
||||
commands::delete_template,
|
||||
commands::create_agent_from_template,
|
||||
commands::detect_agent_drift,
|
||||
commands::sync_agent_with_template,
|
||||
commands::git_status,
|
||||
commands::git_stage,
|
||||
commands::git_unstage,
|
||||
commands::git_commit,
|
||||
commands::git_branches,
|
||||
commands::git_checkout,
|
||||
commands::git_log,
|
||||
commands::git_init,
|
||||
commands::git_graph,
|
||||
commands::move_tab_to_new_window,
|
||||
])
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running IdeA Tauri application");
|
||||
}
|
||||
Reference in New Issue
Block a user