Phase 1 — Cost Intelligence: - budget.rs: per-project token budgets, soft/hard limits, usage logging - router.rs: 3 preset profiles (CostSaver/QualityFirst/Balanced) Phase 2 — Knowledge Base: - memory.rs: persistent agent memory with FTS5, auto-extraction, TTL - symbols.rs: regex-based symbol graph (tree-sitter stub) Phase 3 — Git Integration: - git_context.rs: branch/commit/modified file context injection - branch_policy.rs: session-level branch protection 6 modules, 32 cargo tests, 22+ Tauri plugin commands.
94 lines
3 KiB
Rust
94 lines
3 KiB
Rust
// SPDX-License-Identifier: LicenseRef-Commercial
|
|
//
|
|
// agor-pro — Commercial plugin for Agents Orchestrator.
|
|
// This crate is NOT open-source. It is distributed only via the
|
|
// agents-orchestrator/agents-orchestrator private repository.
|
|
|
|
mod analytics;
|
|
mod branch_policy;
|
|
mod budget;
|
|
mod export;
|
|
mod git_context;
|
|
mod marketplace;
|
|
mod memory;
|
|
mod profiles;
|
|
mod router;
|
|
mod symbols;
|
|
|
|
use tauri::{
|
|
plugin::{Builder, TauriPlugin},
|
|
Runtime,
|
|
};
|
|
|
|
pub fn init<R: Runtime>() -> TauriPlugin<R> {
|
|
Builder::new("agor-pro")
|
|
.invoke_handler(tauri::generate_handler![
|
|
pro_status,
|
|
analytics::pro_analytics_summary,
|
|
analytics::pro_analytics_daily,
|
|
analytics::pro_analytics_model_breakdown,
|
|
export::pro_export_session,
|
|
export::pro_export_project_summary,
|
|
profiles::pro_list_accounts,
|
|
profiles::pro_get_active_account,
|
|
profiles::pro_set_active_account,
|
|
marketplace::pro_marketplace_fetch_catalog,
|
|
marketplace::pro_marketplace_installed,
|
|
marketplace::pro_marketplace_install,
|
|
marketplace::pro_marketplace_uninstall,
|
|
marketplace::pro_marketplace_check_updates,
|
|
marketplace::pro_marketplace_update,
|
|
budget::pro_budget_set,
|
|
budget::pro_budget_get,
|
|
budget::pro_budget_check,
|
|
budget::pro_budget_log_usage,
|
|
budget::pro_budget_reset,
|
|
budget::pro_budget_list,
|
|
router::pro_router_recommend,
|
|
router::pro_router_set_profile,
|
|
router::pro_router_get_profile,
|
|
router::pro_router_list_profiles,
|
|
memory::pro_memory_add,
|
|
memory::pro_memory_list,
|
|
memory::pro_memory_search,
|
|
memory::pro_memory_update,
|
|
memory::pro_memory_delete,
|
|
memory::pro_memory_inject,
|
|
memory::pro_memory_extract_from_session,
|
|
symbols::pro_symbols_scan,
|
|
symbols::pro_symbols_search,
|
|
symbols::pro_symbols_find_callers,
|
|
symbols::pro_symbols_status,
|
|
git_context::pro_git_context,
|
|
git_context::pro_git_inject,
|
|
git_context::pro_git_branch_info,
|
|
branch_policy::pro_branch_check,
|
|
branch_policy::pro_branch_policy_list,
|
|
branch_policy::pro_branch_policy_add,
|
|
branch_policy::pro_branch_policy_remove,
|
|
])
|
|
.build()
|
|
}
|
|
|
|
#[tauri::command]
|
|
fn pro_status() -> String {
|
|
"active".to_string()
|
|
}
|
|
|
|
/// Open the sessions.db for the current data directory.
|
|
fn open_sessions_db() -> Result<rusqlite::Connection, String> {
|
|
let config = agor_core::config::AppConfig::from_env();
|
|
let db_path = config.data_dir.join("sessions.db");
|
|
rusqlite::Connection::open(&db_path)
|
|
.map_err(|e| format!("Failed to open sessions.db: {e}"))
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_pro_status() {
|
|
assert_eq!(pro_status(), "active");
|
|
}
|
|
}
|