import { resolveTauriInvoke } from '../app/tauri'; import type { AgcExtensionSummary, AgcPluginPanel, AgcPluginSummary, } from '../app/types'; export type PluginRpcParams = Record | unknown[] | null; function invokeOrThrow() { const invoke = resolveTauriInvoke(); if (!invoke) throw new Error('需要在 Tauri App 内运行'); return invoke; } export async function listAgcPlugins() { return invokeOrThrow()('list_agc_plugins') as Promise; } export async function listAgcExtensions() { return invokeOrThrow()('list_agc_extensions') as Promise< AgcExtensionSummary[] >; } export async function refreshAgcPlugins() { return invokeOrThrow()('refresh_agc_plugins') as Promise; } export async function startAgcPlugin(id: string) { return invokeOrThrow()('start_agc_plugin', { id, }) as Promise; } export async function stopAgcPlugin(id: string) { return invokeOrThrow()('stop_agc_plugin', { id, }) as Promise; } export async function reloadAgcPlugin(id: string) { return invokeOrThrow()('reload_agc_plugin', { id, }) as Promise; } /** 内置插件的可用开关;禁用后不能启动,对应 Agent 工具也不再出现。 */ export async function setAgcPluginEnabled(id: string, enabled: boolean) { return invokeOrThrow()('set_agc_plugin_enabled', { id, enabled, }) as Promise; } export async function callAgcPlugin( id: string, method: string, params: PluginRpcParams = null, ) { return invokeOrThrow()('call_agc_plugin', { id, method, params, }) as Promise; } export async function readAgcPluginPanel(id: string, panelId: string) { return invokeOrThrow()('read_agc_plugin_panel', { id, panelId }) as Promise<{ panel: AgcPluginPanel; html: string; }>; } export async function setAgcPluginProjectPath(projectPath: string | null) { return invokeOrThrow()('set_agc_plugin_project_path', { projectPath, }) as Promise; }