All files / src/lib viking-client.ts

0% Statements 0/66
0% Branches 0/1
0% Functions 0/1
0% Lines 0/66

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175                                                                                                                                                                                                                                                                                                                                                             
/**
 * 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');
}