import { invoke } from "@tauri-apps/api/core"; import type { McpToolPolicy, PermissionSet, ProjectMcpToolPermissions, ProjectPermissions, ProjectSystemPermissions, ResolvedAgentPermissions, ResolvedAgentSystemPermissions, SystemPermissionSet, } from "@/domain"; import type { PermissionGateway } from "@/ports"; /** Tauri-backed permissions gateway. */ export class TauriPermissionGateway implements PermissionGateway { getProjectPermissions(projectId: string): Promise { return invoke("get_project_permissions", { projectId }); } updateProjectPermissions( projectId: string, permissions: PermissionSet | null, ): Promise { return invoke("update_project_permissions", { request: { projectId, permissions }, }); } updateAgentPermissions( projectId: string, agentId: string, permissions: PermissionSet | null, ): Promise { return invoke("update_agent_permissions", { request: { projectId, agentId, permissions }, }); } resolveAgentPermissions( projectId: string, agentId: string, ): Promise { return invoke("resolve_agent_permissions", { request: { projectId, agentId }, }); } getProjectSystemPermissions(projectId: string): Promise { return invoke("get_project_system_permissions", { projectId, }); } updateProjectSystemPermissions( projectId: string, permissions: SystemPermissionSet | null, ): Promise { return invoke("update_project_system_permissions", { request: { projectId, permissions }, }); } updateAgentSystemPermissions( projectId: string, agentId: string, permissions: SystemPermissionSet | null, ): Promise { return invoke("update_agent_system_permissions", { request: { projectId, agentId, permissions }, }); } resolveAgentSystemPermissions( projectId: string, agentId: string, ): Promise { return invoke( "resolve_agent_system_permissions", { request: { projectId, agentId } }, ); } getMcpToolPermissions(projectId: string): Promise { return invoke("get_mcp_tool_permissions", { projectId, }); } updateProjectMcpToolPermissions( projectId: string, policy: McpToolPolicy | null, ): Promise { return invoke( "update_project_mcp_tool_permissions", { request: { projectId, policy } }, ); } updateAgentMcpToolPermissions( projectId: string, agentId: string, policy: McpToolPolicy | null, ): Promise { return invoke( "update_agent_mcp_tool_permissions", { request: { projectId, agentId, policy } }, ); } setAgentMcpToolAllowed( projectId: string, agentId: string, toolName: string, allowed: boolean, ): Promise { return invoke("set_agent_mcp_tool_allowed", { request: { projectId, agentId, toolName, allowed }, }); } }