Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/apps/desktop/src/api/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ pub mod miniapp_api;
pub mod project_context_api;
pub mod remote_connect_api;
pub mod runtime_api;
pub mod self_control_api;
pub mod session_api;
pub mod session_storage_path;
pub mod skill_api;
Expand Down
35 changes: 35 additions & 0 deletions src/apps/desktop/src/api/self_control_api.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
//! SelfControl API — frontend submits responses to self-control requests.

use bitfun_core::agentic::tools::implementations::self_control_tool::{
submit_self_control_response as submit_self_control_response_impl, SelfControlResponse,
};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SubmitSelfControlResponseRequest {
pub request_id: String,
pub success: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub result: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}

#[tauri::command]
pub async fn submit_self_control_response(
request: SubmitSelfControlResponseRequest,
) -> Result<(), String> {
let response = SelfControlResponse {
request_id: request.request_id,
success: request.success,
result: request.result,
error: request.error,
};

submit_self_control_response_impl(response)
.await
.map_err(|e| e.to_string())?;

Ok(())
}
1 change: 1 addition & 0 deletions src/apps/desktop/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -687,6 +687,7 @@ pub async fn run() {
// Browser API
api::browser_api::browser_webview_eval,
api::browser_api::browser_get_url,
api::self_control_api::submit_self_control_response,
// Insights API
api::insights_api::generate_insights,
api::insights_api::get_latest_insights,
Expand Down
1 change: 1 addition & 0 deletions src/crates/core/src/agentic/agents/claw_mode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ impl ClawMode {
// All desktop automation consolidated into ComputerUse
// (click_element, click, mouse_move, scroll, drag, screenshot, locate, etc.)
"ComputerUse".to_string(),
"SelfControl".to_string(),
],
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/crates/core/src/agentic/tools/implementations/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ pub mod ls_tool;
pub mod mcp_tools;
pub mod mermaid_interactive_tool;
pub mod miniapp_init_tool;
pub mod self_control_tool;
pub mod session_control_tool;
pub mod session_history_tool;
pub mod session_message_tool;
Expand Down Expand Up @@ -60,6 +61,7 @@ pub use mcp_tools::{
};
pub use mermaid_interactive_tool::MermaidInteractiveTool;
pub use miniapp_init_tool::InitMiniAppTool;
pub use self_control_tool::SelfControlTool;
pub use session_control_tool::SessionControlTool;
pub use session_history_tool::SessionHistoryTool;
pub use session_message_tool::SessionMessageTool;
Expand Down
Loading
Loading