From f846f3d63205cb3f63a743fdcdcb292310f62b51 Mon Sep 17 00:00:00 2001 From: iven Date: Sun, 5 Apr 2026 00:22:45 +0800 Subject: [PATCH] fix(tauri): update @reserved annotations + remove dead SaaS client methods MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update 9 @reserved → @connected for commands with frontend consumers: zclaw_status, zclaw_start, zclaw_stop, zclaw_restart, zclaw_doctor, viking_add_with_metadata, viking_store_with_summaries, trigger_execute, scheduled_task_create - Remove 10 dead SaaS client methods with zero callers: healthCheck, listDevices (saas-client.ts) getRelayTask, getUsage/relay (saas-relay.ts) listPrompts, getPrompt, listPromptVersions, getPromptVersion (saas-prompt.ts) getPlan, getUsage/billing (saas-billing.ts) Co-Authored-By: Claude Opus 4.6 --- desktop/src-tauri/src/gateway/commands.rs | 10 +++--- .../src/kernel_commands/scheduled_task.rs | 2 +- .../src-tauri/src/kernel_commands/trigger.rs | 2 +- desktop/src-tauri/src/viking_commands.rs | 4 +-- desktop/src/lib/saas-billing.ts | 18 ---------- desktop/src/lib/saas-client.ts | 36 ------------------- desktop/src/lib/saas-prompt.ts | 24 ------------- desktop/src/lib/saas-relay.ts | 18 ---------- 8 files changed, 9 insertions(+), 105 deletions(-) diff --git a/desktop/src-tauri/src/gateway/commands.rs b/desktop/src-tauri/src/gateway/commands.rs index 0d2b21c..3478566 100644 --- a/desktop/src-tauri/src/gateway/commands.rs +++ b/desktop/src-tauri/src/gateway/commands.rs @@ -52,14 +52,14 @@ pub(crate) struct ProcessLogsResponse { } /// Get ZCLAW Kernel status -// @reserved: 暂无前端集成 +// @connected #[tauri::command] pub fn zclaw_status(app: AppHandle) -> Result { read_gateway_status(&app) } /// Start ZCLAW Kernel -// @reserved: 暂无前端集成 +// @connected #[tauri::command] pub fn zclaw_start(app: AppHandle) -> Result { ensure_local_gateway_ready_for_tauri(&app)?; @@ -69,7 +69,7 @@ pub fn zclaw_start(app: AppHandle) -> Result { } /// Stop ZCLAW Kernel -// @reserved: 暂无前端集成 +// @connected #[tauri::command] pub fn zclaw_stop(app: AppHandle) -> Result { run_zclaw(&app, &["gateway", "stop", "--json"])?; @@ -78,7 +78,7 @@ pub fn zclaw_stop(app: AppHandle) -> Result { } /// Restart ZCLAW Kernel -// @reserved: 暂无前端集成 +// @connected #[tauri::command] pub fn zclaw_restart(app: AppHandle) -> Result { ensure_local_gateway_ready_for_tauri(&app)?; @@ -114,7 +114,7 @@ pub fn zclaw_approve_device_pairing( } /// Run ZCLAW doctor to diagnose issues -// @reserved: 暂无前端集成 +// @connected #[tauri::command] pub fn zclaw_doctor(app: AppHandle) -> Result { let result = run_zclaw(&app, &["doctor", "--json"])?; diff --git a/desktop/src-tauri/src/kernel_commands/scheduled_task.rs b/desktop/src-tauri/src/kernel_commands/scheduled_task.rs index e46cd96..0089528 100644 --- a/desktop/src-tauri/src/kernel_commands/scheduled_task.rs +++ b/desktop/src-tauri/src/kernel_commands/scheduled_task.rs @@ -47,7 +47,7 @@ pub struct ScheduledTaskResponse { /// /// Tasks are automatically executed by the SchedulerService which checks /// every 60 seconds for due triggers. -// @reserved: 暂无前端集成 +// @connected #[tauri::command] pub async fn scheduled_task_create( state: State<'_, KernelState>, diff --git a/desktop/src-tauri/src/kernel_commands/trigger.rs b/desktop/src-tauri/src/kernel_commands/trigger.rs index 05eaf0e..8a5db51 100644 --- a/desktop/src-tauri/src/kernel_commands/trigger.rs +++ b/desktop/src-tauri/src/kernel_commands/trigger.rs @@ -227,7 +227,7 @@ pub async fn trigger_delete( } /// Execute a trigger manually -// @reserved: 暂无前端集成 +// @connected #[tauri::command] pub async fn trigger_execute( state: State<'_, KernelState>, diff --git a/desktop/src-tauri/src/viking_commands.rs b/desktop/src-tauri/src/viking_commands.rs index e3213a4..3fae4c1 100644 --- a/desktop/src-tauri/src/viking_commands.rs +++ b/desktop/src-tauri/src/viking_commands.rs @@ -182,7 +182,7 @@ pub async fn viking_add(uri: String, content: String) -> Result('GET', '/api/v1/billing/plans'); }; - /** Get a single plan by ID */ - proto.getPlan = async function ( - this: { request: RequestFn }, - planId: string, - ): Promise { - return this.request('GET', `/api/v1/billing/plans/${planId}`); - }; - // --- Subscription --- /** Get current subscription info (plan + subscription + usage) */ @@ -97,15 +88,6 @@ export function installBillingMethods(ClientClass: { prototype: any }): void { return this.request('GET', '/api/v1/billing/subscription'); }; - // --- Usage --- - - /** Get current month's usage quota */ - proto.getUsage = async function ( - this: { request: RequestFn }, - ): Promise { - return this.request('GET', '/api/v1/billing/usage'); - }; - // --- Payments --- /** Create a payment order for a plan upgrade */ diff --git a/desktop/src/lib/saas-client.ts b/desktop/src/lib/saas-client.ts index cb86b8f..fa95fa0 100644 --- a/desktop/src/lib/saas-client.ts +++ b/desktop/src/lib/saas-client.ts @@ -89,17 +89,12 @@ import type { TotpResultResponse, SaaSModelInfo, SaaSConfigItem, - DeviceInfo, SyncConfigRequest, ConfigDiffResponse, ConfigSyncResult, SaaSErrorResponse, RelayTaskInfo, - UsageStats, PromptCheckResult, - PromptTemplateInfo, - PromptVersionInfo, - PaginatedResponse, AgentTemplateAvailable, AgentTemplateFull, AgentConfigFromTemplate, @@ -310,21 +305,6 @@ export class SaaSClient { throw new SaaSApiError(0, 'UNKNOWN', '请求失败'); } - // --- Health --- - - /** - * Quick connectivity check against the SaaS backend. - */ - async healthCheck(): Promise { - try { - await this.request('GET', '/api/health', undefined, 5000); - return true; - } catch (e) { - saasLog.debug('Health check failed', { error: e }); - return false; - } - } - // --- Device Endpoints --- /** @@ -353,14 +333,6 @@ export class SaaSClient { }); } - /** - * List devices registered for the current account. - */ - async listDevices(): Promise { - const res = await this.request<{ items: DeviceInfo[] }>('GET', '/api/v1/devices'); - return res.items; - } - // --- Model Endpoints --- /** @@ -490,17 +462,11 @@ export interface SaaSClient { // --- Relay (saas-relay.ts) --- listRelayTasks(query?: { status?: string; page?: number; page_size?: number }): Promise; - getRelayTask(taskId: string): Promise; retryRelayTask(taskId: string): Promise<{ ok: boolean; task_id: string }>; chatCompletion(body: unknown, signal?: AbortSignal): Promise; - getUsage(params?: { from?: string; to?: string; provider_id?: string; model_id?: string }): Promise; // --- Prompt OTA (saas-prompt.ts) --- checkPromptUpdates(deviceId: string, currentVersions: Record): Promise; - listPrompts(params?: { category?: string; source?: string; status?: string; page?: number; page_size?: number }): Promise>; - getPrompt(name: string): Promise; - listPromptVersions(name: string): Promise; - getPromptVersion(name: string, version: number): Promise; // --- Telemetry (saas-telemetry.ts) --- reportTelemetry(data: { @@ -531,9 +497,7 @@ export interface SaaSClient { incrementUsageDimension(dimension: string, count?: number): Promise; reportUsageFireAndForget(dimension: string, count?: number): void; listPlans(): Promise; - getPlan(planId: string): Promise; getSubscription(): Promise; - getUsage(): Promise; createPayment(data: import('./saas-types').CreatePaymentRequest): Promise; getPaymentStatus(paymentId: string): Promise; } diff --git a/desktop/src/lib/saas-prompt.ts b/desktop/src/lib/saas-prompt.ts index 605f467..4675696 100644 --- a/desktop/src/lib/saas-prompt.ts +++ b/desktop/src/lib/saas-prompt.ts @@ -7,9 +7,6 @@ import type { PromptCheckResult, - PromptTemplateInfo, - PromptVersionInfo, - PaginatedResponse, } from './saas-types'; export function installPromptMethods(ClientClass: { prototype: any }): void { @@ -22,25 +19,4 @@ export function installPromptMethods(ClientClass: { prototype: any }): void { versions: currentVersions, }); }; - - /** List all prompt templates */ - proto.listPrompts = async function (this: { request(method: string, path: string, body?: unknown): Promise }, params?: { category?: string; source?: string; status?: string; page?: number; page_size?: number }): Promise> { - const qs = params ? '?' + new URLSearchParams(params as Record).toString() : ''; - return this.request>('GET', `/api/v1/prompts${qs}`); - }; - - /** Get prompt template by name */ - proto.getPrompt = async function (this: { request(method: string, path: string, body?: unknown): Promise }, name: string): Promise { - return this.request('GET', `/api/v1/prompts/${encodeURIComponent(name)}`); - }; - - /** List prompt versions */ - proto.listPromptVersions = async function (this: { request(method: string, path: string, body?: unknown): Promise }, name: string): Promise { - return this.request('GET', `/api/v1/prompts/${encodeURIComponent(name)}/versions`); - }; - - /** Get specific prompt version */ - proto.getPromptVersion = async function (this: { request(method: string, path: string, body?: unknown): Promise }, name: string, version: number): Promise { - return this.request('GET', `/api/v1/prompts/${encodeURIComponent(name)}/versions/${version}`); - }; } diff --git a/desktop/src/lib/saas-relay.ts b/desktop/src/lib/saas-relay.ts index 6a0322b..7149ae3 100644 --- a/desktop/src/lib/saas-relay.ts +++ b/desktop/src/lib/saas-relay.ts @@ -7,7 +7,6 @@ import type { RelayTaskInfo, - UsageStats, } from './saas-types'; import { createLogger } from './logger'; const logger = createLogger('SaaSRelay'); @@ -27,11 +26,6 @@ export function installRelayMethods(ClientClass: { prototype: any }): void { return this.request('GET', `/api/v1/relay/tasks${qs ? '?' + qs : ''}`); }; - /** Get a single relay task */ - proto.getRelayTask = async function (this: { request(method: string, path: string, body?: unknown): Promise }, taskId: string): Promise { - return this.request('GET', `/api/v1/relay/tasks/${taskId}`); - }; - /** Retry a failed relay task (admin only) */ proto.retryRelayTask = async function (this: { request(method: string, path: string, body?: unknown): Promise }, taskId: string): Promise<{ ok: boolean; task_id: string }> { return this.request<{ ok: boolean; task_id: string }>('POST', `/api/v1/relay/tasks/${taskId}/retry`); @@ -117,16 +111,4 @@ export function installRelayMethods(ClientClass: { prototype: any }): void { throw new Error('chatCompletion: all attempts exhausted'); }; - // --- Usage Statistics --- - - /** Get usage statistics for current account */ - proto.getUsage = async function (this: { request(method: string, path: string, body?: unknown): Promise }, params?: { from?: string; to?: string; provider_id?: string; model_id?: string }): Promise { - const qs = new URLSearchParams(); - if (params?.from) qs.set('from', params.from); - if (params?.to) qs.set('to', params.to); - if (params?.provider_id) qs.set('provider_id', params.provider_id); - if (params?.model_id) qs.set('model_id', params.model_id); - const query = qs.toString(); - return this.request('GET', `/api/v1/usage${query ? '?' + query : ''}`); - }; }