refactor: 清理未使用代码并添加未来功能标记
Some checks failed
CI / Rust Check (push) Has been cancelled
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Rust Check (push) Has been cancelled
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
style: 统一代码格式和注释风格 docs: 更新多个功能文档的完整度和状态 feat(runtime): 添加路径验证工具支持 fix(pipeline): 改进条件判断和变量解析逻辑 test(types): 为ID类型添加全面测试用例 chore: 更新依赖项和Cargo.lock文件 perf(mcp): 优化MCP协议传输和错误处理
This commit is contained in:
174
desktop/src/lib/viking-client.ts
Normal file
174
desktop/src/lib/viking-client.ts
Normal file
@@ -0,0 +1,174 @@
|
||||
/**
|
||||
* OpenViking Client - Semantic Memory Operations
|
||||
*
|
||||
* Client for interacting with OpenViking CLI sidecar.
|
||||
* Provides semantic search, resource management, and knowledge base operations.
|
||||
*/
|
||||
|
||||
import { invoke } from '@tauri-apps/api/core';
|
||||
|
||||
// === Types ===
|
||||
|
||||
export interface VikingStatus {
|
||||
available: boolean;
|
||||
version?: string;
|
||||
dataDir?: string;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
export interface VikingResource {
|
||||
uri: string;
|
||||
name: string;
|
||||
resourceType: string;
|
||||
size?: number;
|
||||
modifiedAt?: string;
|
||||
}
|
||||
|
||||
export interface VikingFindResult {
|
||||
uri: string;
|
||||
score: number;
|
||||
content: string;
|
||||
level: string;
|
||||
overview?: string;
|
||||
}
|
||||
|
||||
export interface VikingGrepResult {
|
||||
uri: string;
|
||||
line: number;
|
||||
content: string;
|
||||
matchStart: number;
|
||||
matchEnd: number;
|
||||
}
|
||||
|
||||
export interface VikingAddResult {
|
||||
uri: string;
|
||||
status: string;
|
||||
}
|
||||
|
||||
// === Client Functions ===
|
||||
|
||||
/**
|
||||
* Check if OpenViking CLI is available
|
||||
*/
|
||||
export async function getVikingStatus(): Promise<VikingStatus> {
|
||||
return invoke<VikingStatus>('viking_status');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a resource to OpenViking from file
|
||||
*/
|
||||
export async function addVikingResource(
|
||||
uri: string,
|
||||
content: string
|
||||
): Promise<VikingAddResult> {
|
||||
return invoke<VikingAddResult>('viking_add', { uri, content });
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a resource with inline content
|
||||
*/
|
||||
export async function addVikingResourceInline(
|
||||
uri: string,
|
||||
content: string
|
||||
): Promise<VikingAddResult> {
|
||||
return invoke<VikingAddResult>('viking_add_inline', { uri, content });
|
||||
}
|
||||
|
||||
/**
|
||||
* Find resources by semantic search
|
||||
*/
|
||||
export async function findVikingResources(
|
||||
query: string,
|
||||
scope?: string,
|
||||
limit?: number
|
||||
): Promise<VikingFindResult[]> {
|
||||
return invoke<VikingFindResult[]>('viking_find', { query, scope, limit });
|
||||
}
|
||||
|
||||
/**
|
||||
* Grep resources by pattern
|
||||
*/
|
||||
export async function grepVikingResources(
|
||||
pattern: string,
|
||||
uri?: string,
|
||||
caseSensitive?: boolean,
|
||||
limit?: number
|
||||
): Promise<VikingGrepResult[]> {
|
||||
return invoke<VikingGrepResult[]>('viking_grep', {
|
||||
pattern,
|
||||
uri,
|
||||
caseSensitive,
|
||||
limit,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* List resources at a path
|
||||
*/
|
||||
export async function listVikingResources(path: string): Promise<VikingResource[]> {
|
||||
return invoke<VikingResource[]>('viking_ls', { path });
|
||||
}
|
||||
|
||||
/**
|
||||
* Read resource content
|
||||
*/
|
||||
export async function readVikingResource(
|
||||
uri: string,
|
||||
level?: string
|
||||
): Promise<string> {
|
||||
return invoke<string>('viking_read', { uri, level });
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a resource
|
||||
*/
|
||||
export async function removeVikingResource(uri: string): Promise<void> {
|
||||
return invoke<void>('viking_remove', { uri });
|
||||
}
|
||||
|
||||
/**
|
||||
* Get resource tree
|
||||
*/
|
||||
export async function getVikingTree(
|
||||
path: string,
|
||||
depth?: number
|
||||
): Promise<Record<string, unknown>> {
|
||||
return invoke<Record<string, unknown>>('viking_tree', { path, depth });
|
||||
}
|
||||
|
||||
// === Server Functions ===
|
||||
|
||||
export interface VikingServerStatus {
|
||||
running: boolean;
|
||||
port?: number;
|
||||
pid?: number;
|
||||
error?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Viking server status
|
||||
*/
|
||||
export async function getVikingServerStatus(): Promise<VikingServerStatus> {
|
||||
return invoke<VikingServerStatus>('viking_server_status');
|
||||
}
|
||||
|
||||
/**
|
||||
* Start Viking server
|
||||
*/
|
||||
export async function startVikingServer(): Promise<void> {
|
||||
return invoke<void>('viking_server_start');
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop Viking server
|
||||
*/
|
||||
export async function stopVikingServer(): Promise<void> {
|
||||
return invoke<void>('viking_server_stop');
|
||||
}
|
||||
|
||||
/**
|
||||
* Restart Viking server
|
||||
*/
|
||||
export async function restartVikingServer(): Promise<void> {
|
||||
return invoke<void>('viking_server_restart');
|
||||
}
|
||||
Reference in New Issue
Block a user