@kernel.chat/kbot 1.3.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/README.md +94 -0
  2. package/dist/agent.d.ts +9 -0
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +576 -119
  5. package/dist/agent.js.map +1 -1
  6. package/dist/auth.d.ts +20 -35
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +236 -66
  9. package/dist/auth.js.map +1 -1
  10. package/dist/auth.test.d.ts +2 -0
  11. package/dist/auth.test.d.ts.map +1 -0
  12. package/dist/auth.test.js +89 -0
  13. package/dist/auth.test.js.map +1 -0
  14. package/dist/build-targets.d.ts +37 -0
  15. package/dist/build-targets.d.ts.map +1 -0
  16. package/dist/build-targets.js +507 -0
  17. package/dist/build-targets.js.map +1 -0
  18. package/dist/cli.js +1211 -131
  19. package/dist/cli.js.map +1 -1
  20. package/dist/context.d.ts +2 -0
  21. package/dist/context.d.ts.map +1 -1
  22. package/dist/context.js +72 -22
  23. package/dist/context.js.map +1 -1
  24. package/dist/hooks.d.ts +27 -0
  25. package/dist/hooks.d.ts.map +1 -0
  26. package/dist/hooks.js +145 -0
  27. package/dist/hooks.js.map +1 -0
  28. package/dist/ide/acp-server.d.ts +6 -0
  29. package/dist/ide/acp-server.d.ts.map +1 -0
  30. package/dist/ide/acp-server.js +319 -0
  31. package/dist/ide/acp-server.js.map +1 -0
  32. package/dist/ide/bridge.d.ts +128 -0
  33. package/dist/ide/bridge.d.ts.map +1 -0
  34. package/dist/ide/bridge.js +185 -0
  35. package/dist/ide/bridge.js.map +1 -0
  36. package/dist/ide/index.d.ts +5 -0
  37. package/dist/ide/index.d.ts.map +1 -0
  38. package/dist/ide/index.js +11 -0
  39. package/dist/ide/index.js.map +1 -0
  40. package/dist/ide/lsp-bridge.d.ts +27 -0
  41. package/dist/ide/lsp-bridge.d.ts.map +1 -0
  42. package/dist/ide/lsp-bridge.js +267 -0
  43. package/dist/ide/lsp-bridge.js.map +1 -0
  44. package/dist/ide/mcp-server.d.ts +7 -0
  45. package/dist/ide/mcp-server.d.ts.map +1 -0
  46. package/dist/ide/mcp-server.js +451 -0
  47. package/dist/ide/mcp-server.js.map +1 -0
  48. package/dist/learning.d.ts +179 -0
  49. package/dist/learning.d.ts.map +1 -0
  50. package/dist/learning.js +829 -0
  51. package/dist/learning.js.map +1 -0
  52. package/dist/learning.test.d.ts +2 -0
  53. package/dist/learning.test.d.ts.map +1 -0
  54. package/dist/learning.test.js +115 -0
  55. package/dist/learning.test.js.map +1 -0
  56. package/dist/matrix.d.ts +49 -0
  57. package/dist/matrix.d.ts.map +1 -0
  58. package/dist/matrix.js +302 -0
  59. package/dist/matrix.js.map +1 -0
  60. package/dist/memory.d.ts +11 -0
  61. package/dist/memory.d.ts.map +1 -1
  62. package/dist/memory.js +54 -2
  63. package/dist/memory.js.map +1 -1
  64. package/dist/multimodal.d.ts +57 -0
  65. package/dist/multimodal.d.ts.map +1 -0
  66. package/dist/multimodal.js +206 -0
  67. package/dist/multimodal.js.map +1 -0
  68. package/dist/permissions.d.ts +21 -0
  69. package/dist/permissions.d.ts.map +1 -0
  70. package/dist/permissions.js +122 -0
  71. package/dist/permissions.js.map +1 -0
  72. package/dist/planner.d.ts +54 -0
  73. package/dist/planner.d.ts.map +1 -0
  74. package/dist/planner.js +298 -0
  75. package/dist/planner.js.map +1 -0
  76. package/dist/plugins.d.ts +30 -0
  77. package/dist/plugins.d.ts.map +1 -0
  78. package/dist/plugins.js +135 -0
  79. package/dist/plugins.js.map +1 -0
  80. package/dist/sessions.d.ts +38 -0
  81. package/dist/sessions.d.ts.map +1 -0
  82. package/dist/sessions.js +177 -0
  83. package/dist/sessions.js.map +1 -0
  84. package/dist/streaming.d.ts +88 -0
  85. package/dist/streaming.d.ts.map +1 -0
  86. package/dist/streaming.js +317 -0
  87. package/dist/streaming.js.map +1 -0
  88. package/dist/tools/background.d.ts +2 -0
  89. package/dist/tools/background.d.ts.map +1 -0
  90. package/dist/tools/background.js +163 -0
  91. package/dist/tools/background.js.map +1 -0
  92. package/dist/tools/bash.d.ts.map +1 -1
  93. package/dist/tools/bash.js +26 -1
  94. package/dist/tools/bash.js.map +1 -1
  95. package/dist/tools/browser.js +7 -7
  96. package/dist/tools/browser.js.map +1 -1
  97. package/dist/tools/build-matrix.d.ts +2 -0
  98. package/dist/tools/build-matrix.d.ts.map +1 -0
  99. package/dist/tools/build-matrix.js +463 -0
  100. package/dist/tools/build-matrix.js.map +1 -0
  101. package/dist/tools/computer.js +5 -5
  102. package/dist/tools/computer.js.map +1 -1
  103. package/dist/tools/fetch.d.ts +2 -0
  104. package/dist/tools/fetch.d.ts.map +1 -0
  105. package/dist/tools/fetch.js +106 -0
  106. package/dist/tools/fetch.js.map +1 -0
  107. package/dist/tools/files.d.ts.map +1 -1
  108. package/dist/tools/files.js +112 -6
  109. package/dist/tools/files.js.map +1 -1
  110. package/dist/tools/git.js +3 -3
  111. package/dist/tools/git.js.map +1 -1
  112. package/dist/tools/github.d.ts +2 -0
  113. package/dist/tools/github.d.ts.map +1 -0
  114. package/dist/tools/github.js +196 -0
  115. package/dist/tools/github.js.map +1 -0
  116. package/dist/tools/index.d.ts +29 -5
  117. package/dist/tools/index.d.ts.map +1 -1
  118. package/dist/tools/index.js +136 -20
  119. package/dist/tools/index.js.map +1 -1
  120. package/dist/tools/index.test.d.ts +2 -0
  121. package/dist/tools/index.test.d.ts.map +1 -0
  122. package/dist/tools/index.test.js +162 -0
  123. package/dist/tools/index.test.js.map +1 -0
  124. package/dist/tools/matrix.d.ts +2 -0
  125. package/dist/tools/matrix.d.ts.map +1 -0
  126. package/dist/tools/matrix.js +79 -0
  127. package/dist/tools/matrix.js.map +1 -0
  128. package/dist/tools/mcp-client.d.ts +2 -0
  129. package/dist/tools/mcp-client.d.ts.map +1 -0
  130. package/dist/tools/mcp-client.js +295 -0
  131. package/dist/tools/mcp-client.js.map +1 -0
  132. package/dist/tools/notebook.d.ts +2 -0
  133. package/dist/tools/notebook.d.ts.map +1 -0
  134. package/dist/tools/notebook.js +207 -0
  135. package/dist/tools/notebook.js.map +1 -0
  136. package/dist/tools/openclaw.d.ts +2 -0
  137. package/dist/tools/openclaw.d.ts.map +1 -0
  138. package/dist/tools/openclaw.js +187 -0
  139. package/dist/tools/openclaw.js.map +1 -0
  140. package/dist/tools/parallel.d.ts +2 -0
  141. package/dist/tools/parallel.d.ts.map +1 -0
  142. package/dist/tools/parallel.js +60 -0
  143. package/dist/tools/parallel.js.map +1 -0
  144. package/dist/tools/sandbox.d.ts +2 -0
  145. package/dist/tools/sandbox.d.ts.map +1 -0
  146. package/dist/tools/sandbox.js +352 -0
  147. package/dist/tools/sandbox.js.map +1 -0
  148. package/dist/tools/search.d.ts.map +1 -1
  149. package/dist/tools/search.js +135 -28
  150. package/dist/tools/search.js.map +1 -1
  151. package/dist/tools/subagent.d.ts +4 -0
  152. package/dist/tools/subagent.d.ts.map +1 -0
  153. package/dist/tools/subagent.js +260 -0
  154. package/dist/tools/subagent.js.map +1 -0
  155. package/dist/tools/tasks.d.ts +14 -0
  156. package/dist/tools/tasks.d.ts.map +1 -0
  157. package/dist/tools/tasks.js +210 -0
  158. package/dist/tools/tasks.js.map +1 -0
  159. package/dist/tools/worktree.d.ts +2 -0
  160. package/dist/tools/worktree.d.ts.map +1 -0
  161. package/dist/tools/worktree.js +223 -0
  162. package/dist/tools/worktree.js.map +1 -0
  163. package/dist/tui.d.ts +73 -0
  164. package/dist/tui.d.ts.map +1 -0
  165. package/dist/tui.js +257 -0
  166. package/dist/tui.js.map +1 -0
  167. package/dist/ui.d.ts +11 -19
  168. package/dist/ui.d.ts.map +1 -1
  169. package/dist/ui.js +143 -171
  170. package/dist/ui.js.map +1 -1
  171. package/dist/updater.d.ts +3 -0
  172. package/dist/updater.d.ts.map +1 -0
  173. package/dist/updater.js +70 -0
  174. package/dist/updater.js.map +1 -0
  175. package/install.sh +5 -7
  176. package/package.json +8 -4
package/dist/auth.js CHANGED
@@ -1,17 +1,16 @@
1
1
  // K:BOT Auth — API key management and configuration
2
2
  // Stores config in ~/.kbot/config.json
3
3
  //
4
- // Supports two modes:
5
- // 1. Kernel API key (kn_live_...) — uses Kernel's routing + agents, message-based billing
6
- // 2. BYOK (Bring Your Own Key) — user's own LLM key, still gets Kernel routing for free
7
- // Supported: Anthropic, OpenAI, Google, Mistral, xAI (Grok), DeepSeek,
8
- // Groq, Together AI, Fireworks, Perplexity, Cohere
4
+ // BYOK (Bring Your Own Key) — open-source, local-first.
5
+ // Supported: Anthropic, OpenAI, Google, Mistral, xAI (Grok), DeepSeek,
6
+ // Groq, Together AI, Fireworks, Perplexity, Cohere, NVIDIA NIM,
7
+ // Ollama (local), OpenClaw (local)
9
8
  import { homedir } from 'node:os';
10
9
  import { join } from 'node:path';
11
- import { mkdirSync, readFileSync, writeFileSync, existsSync } from 'node:fs';
10
+ import { mkdirSync, readFileSync, writeFileSync, existsSync, chmodSync } from 'node:fs';
11
+ import { createCipheriv, createDecipheriv, randomBytes, createHash } from 'node:crypto';
12
12
  const KBOT_DIR = join(homedir(), '.kbot');
13
13
  const CONFIG_PATH = join(KBOT_DIR, 'config.json');
14
- const API_BASE = 'https://eoxxpyixdieprsxlpwcs.supabase.co/functions/v1/kernel-api';
15
14
  export const PROVIDERS = {
16
15
  anthropic: {
17
16
  name: 'Anthropic (Claude)',
@@ -123,6 +122,36 @@ export const PROVIDERS = {
123
122
  outputCost: 10.0,
124
123
  authHeader: 'bearer',
125
124
  },
125
+ nvidia: {
126
+ name: 'NVIDIA NIM',
127
+ apiUrl: 'https://integrate.api.nvidia.com/v1/chat/completions',
128
+ apiStyle: 'openai',
129
+ defaultModel: 'nvidia/llama-3.3-nemotron-super-49b-v1',
130
+ fastModel: 'nvidia/llama-3.1-nemotron-nano-8b-v1',
131
+ inputCost: 0.80,
132
+ outputCost: 1.20,
133
+ authHeader: 'bearer',
134
+ },
135
+ ollama: {
136
+ name: 'Ollama (Local)',
137
+ apiUrl: 'http://localhost:11434/v1/chat/completions',
138
+ apiStyle: 'openai',
139
+ defaultModel: 'qwen2.5-coder:7b',
140
+ fastModel: 'llama3.1:8b',
141
+ inputCost: 0,
142
+ outputCost: 0,
143
+ authHeader: 'bearer', // Ollama ignores auth but needs valid header
144
+ },
145
+ openclaw: {
146
+ name: 'OpenClaw (Local)',
147
+ apiUrl: 'http://127.0.0.1:18789/v1/chat/completions',
148
+ apiStyle: 'openai',
149
+ defaultModel: 'openclaw:main',
150
+ fastModel: 'openclaw:main',
151
+ inputCost: 0,
152
+ outputCost: 0,
153
+ authHeader: 'bearer',
154
+ },
126
155
  };
127
156
  function ensureDir() {
128
157
  if (!existsSync(KBOT_DIR)) {
@@ -140,26 +169,61 @@ export function loadConfig() {
140
169
  if (!existsSync(CONFIG_PATH))
141
170
  return null;
142
171
  const raw = readFileSync(CONFIG_PATH, 'utf-8');
143
- return JSON.parse(raw);
172
+ const config = JSON.parse(raw);
173
+ // Decrypt API key if encrypted
174
+ if (config.byok_key && config.byok_key.startsWith('enc:')) {
175
+ try {
176
+ config.byok_key = decryptValue(config.byok_key);
177
+ }
178
+ catch { /* leave as-is */ }
179
+ }
180
+ return config;
144
181
  }
145
182
  catch {
146
183
  return null;
147
184
  }
148
185
  }
149
- export function saveConfig(config) {
150
- ensureDir();
151
- writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));
186
+ /** Derive encryption key from machine-specific data */
187
+ function deriveEncryptionKey() {
188
+ const machineId = `${homedir()}:${process.env.USER || 'kbot'}:${process.arch}`;
189
+ return createHash('sha256').update(machineId).digest();
152
190
  }
153
- export function getApiKey() {
154
- const envKey = process.env.KBOT_API_KEY;
155
- if (envKey)
156
- return envKey;
157
- const config = loadConfig();
158
- return config?.api_key || null;
191
+ /** Encrypt a string value */
192
+ function encryptValue(plaintext) {
193
+ const key = deriveEncryptionKey();
194
+ const iv = randomBytes(16);
195
+ const cipher = createCipheriv('aes-256-cbc', key, iv);
196
+ let encrypted = cipher.update(plaintext, 'utf-8', 'base64');
197
+ encrypted += cipher.final('base64');
198
+ return `enc:${iv.toString('base64')}:${encrypted}`;
159
199
  }
160
- export function getApiBase() {
161
- const config = loadConfig();
162
- return config?.api_base || API_BASE;
200
+ /** Decrypt a string value */
201
+ function decryptValue(encrypted) {
202
+ if (!encrypted.startsWith('enc:'))
203
+ return encrypted; // Plaintext fallback for migration
204
+ const parts = encrypted.split(':');
205
+ if (parts.length !== 3)
206
+ return encrypted;
207
+ const key = deriveEncryptionKey();
208
+ const iv = Buffer.from(parts[1], 'base64');
209
+ const decipher = createDecipheriv('aes-256-cbc', key, iv);
210
+ let decrypted = decipher.update(parts[2], 'base64', 'utf-8');
211
+ decrypted += decipher.final('utf-8');
212
+ return decrypted;
213
+ }
214
+ export function saveConfig(config) {
215
+ ensureDir();
216
+ // Encrypt API key before saving
217
+ const toSave = { ...config };
218
+ if (toSave.byok_key && !toSave.byok_key.startsWith('enc:') && toSave.byok_key !== 'local') {
219
+ toSave.byok_key = encryptValue(toSave.byok_key);
220
+ }
221
+ writeFileSync(CONFIG_PATH, JSON.stringify(toSave, null, 2));
222
+ // Restrict file permissions (owner read/write only)
223
+ try {
224
+ chmodSync(CONFIG_PATH, 0o600);
225
+ }
226
+ catch { /* Windows doesn't support chmod */ }
163
227
  }
164
228
  export function getDefaultModel() {
165
229
  const config = loadConfig();
@@ -180,6 +244,7 @@ const KEY_PREFIXES = [
180
244
  { prefix: 'xai-', provider: 'xai' },
181
245
  { prefix: 'dsk-', provider: 'deepseek' }, // Some DeepSeek keys
182
246
  { prefix: 'fw_', provider: 'fireworks' },
247
+ { prefix: 'nvapi-', provider: 'nvidia' },
183
248
  // sk- is last because it's the most generic (OpenAI, Mistral, Together, etc.)
184
249
  // These providers all use sk- so we can't distinguish them by prefix alone
185
250
  ];
@@ -207,42 +272,113 @@ const ENV_KEYS = [
207
272
  { env: 'FIREWORKS_API_KEY', provider: 'fireworks' },
208
273
  { env: 'PERPLEXITY_API_KEY', provider: 'perplexity' },
209
274
  { env: 'COHERE_API_KEY', provider: 'cohere' },
275
+ { env: 'NVIDIA_API_KEY', provider: 'nvidia' },
276
+ { env: 'OLLAMA_API_KEY', provider: 'ollama' },
277
+ { env: 'OPENCLAW_API_KEY', provider: 'openclaw' },
210
278
  ];
279
+ /** Check if a provider is local (runs on this machine, may still need a token) */
280
+ export function isLocalProvider(provider) {
281
+ return provider === 'ollama' || provider === 'openclaw';
282
+ }
283
+ /** Check if a provider needs no API key at all */
284
+ export function isKeylessProvider(provider) {
285
+ return provider === 'ollama';
286
+ }
211
287
  /** Check if BYOK mode is enabled (via env var or config) */
212
288
  export function isByokEnabled() {
289
+ // Local providers always work without keys
290
+ const config = loadConfig();
291
+ if (config?.byok_provider && isLocalProvider(config.byok_provider) && config?.byok_enabled)
292
+ return true;
213
293
  for (const { env } of ENV_KEYS) {
214
294
  if (process.env[env])
215
295
  return true;
216
296
  }
217
- const config = loadConfig();
218
297
  return config?.byok_enabled === true && !!config?.byok_key;
219
298
  }
220
299
  /** Get the active BYOK provider */
221
300
  export function getByokProvider() {
301
+ // If config explicitly sets a local provider, use it (don't let env vars override)
302
+ const config = loadConfig();
303
+ if (config?.byok_provider && isLocalProvider(config.byok_provider) && config?.byok_enabled) {
304
+ return config.byok_provider;
305
+ }
222
306
  for (const { env, provider } of ENV_KEYS) {
223
307
  if (process.env[env])
224
308
  return provider;
225
309
  }
226
- const config = loadConfig();
227
310
  return config?.byok_provider || 'anthropic';
228
311
  }
229
312
  /** Get the BYOK API key */
230
313
  export function getByokKey() {
314
+ // Keyless providers (Ollama) don't need real API keys
315
+ const config = loadConfig();
316
+ if (config?.byok_provider && isKeylessProvider(config.byok_provider))
317
+ return 'local';
318
+ // OpenClaw needs its gateway token
319
+ if (config?.byok_provider === 'openclaw' && config?.byok_key)
320
+ return config.byok_key;
231
321
  for (const { env } of ENV_KEYS) {
232
322
  const val = process.env[env];
233
323
  if (val)
234
324
  return val;
235
325
  }
236
- const config = loadConfig();
237
326
  return config?.byok_key || null;
238
327
  }
239
328
  /** Get provider config */
240
329
  export function getProvider(provider) {
241
330
  return PROVIDERS[provider];
242
331
  }
332
+ /** Ollama model routing — pick the best local model for the task */
333
+ const OLLAMA_MODEL_ROUTES = [
334
+ { keywords: /\b(code|function|class|refactor|debug|typescript|javascript|python|rust|go|java|html|css|react|vue|angular|api|endpoint|sql|query|database|schema|migration|test|spec|lint|build|compile|import|export|module|package|dependency|npm|pip|cargo)\b/i, models: ['qwen2.5-coder:7b', 'deepseek-coder-v2:16b', 'codellama:13b', 'codegemma:7b', 'starcoder2:7b'], fallbackCategory: 'code' },
335
+ { keywords: /\b(reason|think|why|explain|analyze|compare|evaluate|proof|logic|math|calculate|solve|deduc|infer|hypothesis|trade.?off|pros?\s+and\s+cons?|decision)\b/i, models: ['phi4:14b', 'nemotron-3-nano', 'gemma3:12b', 'mistral:7b'], fallbackCategory: 'reasoning' },
336
+ { keywords: /\b(research|search|find|look\s+up|summarize|article|paper|report|review|document|write|blog|essay|draft|outline|rewrite|edit|proofread)\b/i, models: ['gemma3:12b', 'llama3.1:8b', 'nemotron-3-nano', 'mistral:7b'], fallbackCategory: 'general' },
337
+ ];
338
+ /** Cache of available Ollama models (refreshed periodically) */
339
+ let cachedOllamaModels = [];
340
+ let ollamaModelsCacheTime = 0;
341
+ async function getAvailableOllamaModels() {
342
+ // Refresh cache every 60 seconds
343
+ if (Date.now() - ollamaModelsCacheTime < 60_000 && cachedOllamaModels.length > 0) {
344
+ return cachedOllamaModels;
345
+ }
346
+ cachedOllamaModels = await listOllamaModels();
347
+ ollamaModelsCacheTime = Date.now();
348
+ return cachedOllamaModels;
349
+ }
350
+ /** Check if a model name matches any available model (handles tag variants) */
351
+ function isModelAvailable(model, available) {
352
+ const base = model.split(':')[0];
353
+ return available.some(m => m === model || m.startsWith(base + ':'));
354
+ }
355
+ /** Select the best Ollama model for a given message, only from available models */
356
+ export function selectOllamaModel(message, availableModels) {
357
+ const available = availableModels || cachedOllamaModels;
358
+ if (available.length === 0)
359
+ return PROVIDERS.ollama.defaultModel;
360
+ for (const route of OLLAMA_MODEL_ROUTES) {
361
+ if (route.keywords.test(message)) {
362
+ // Try each model in preference order, use the first one that's available
363
+ for (const model of route.models) {
364
+ if (isModelAvailable(model, available))
365
+ return model;
366
+ }
367
+ }
368
+ }
369
+ return PROVIDERS.ollama.defaultModel;
370
+ }
371
+ /** Pre-warm the Ollama model cache (call at startup) */
372
+ export async function warmOllamaModelCache() {
373
+ return getAvailableOllamaModels();
374
+ }
243
375
  /** Get model name for provider */
244
- export function getProviderModel(provider, speed) {
376
+ export function getProviderModel(provider, speed, taskHint) {
245
377
  const p = PROVIDERS[provider];
378
+ // Smart routing for Ollama — pick best model per task
379
+ if (provider === 'ollama' && speed === 'default' && taskHint) {
380
+ return selectOllamaModel(taskHint);
381
+ }
246
382
  return speed === 'fast' ? p.fastModel : p.defaultModel;
247
383
  }
248
384
  /** Get the provider API URL */
@@ -258,10 +394,28 @@ export function estimateCost(provider, inputTokens, outputTokens) {
258
394
  export function getAnthropicUrl() {
259
395
  return PROVIDERS.anthropic.apiUrl;
260
396
  }
261
- /** Verify a BYOK key by making a minimal test request */
397
+ /** Quick format validation avoid API calls for obviously invalid keys */
398
+ function isValidKeyFormat(key, provider) {
399
+ if (!key || key.length < 8)
400
+ return false;
401
+ // Provider-specific format checks
402
+ switch (provider) {
403
+ case 'anthropic': return key.startsWith('sk-ant-') && key.length > 20;
404
+ case 'openai': return (key.startsWith('sk-') || key.startsWith('sk-proj-')) && key.length > 20;
405
+ case 'google': return key.startsWith('AIza') && key.length > 20;
406
+ case 'groq': return key.startsWith('gsk_') && key.length > 20;
407
+ case 'xai': return key.startsWith('xai-') && key.length > 20;
408
+ default: return key.length >= 10; // Generic minimum length check
409
+ }
410
+ }
411
+ /** Verify a BYOK key — format check first, API call only if format passes */
262
412
  async function verifyByokKey(key, provider) {
413
+ // Quick format validation (no API cost)
414
+ if (!isValidKeyFormat(key, provider))
415
+ return false;
263
416
  const p = PROVIDERS[provider];
264
417
  try {
418
+ // Use minimal max_tokens=1 to minimize cost of verification
265
419
  if (p.apiStyle === 'anthropic') {
266
420
  const res = await fetch(p.apiUrl, {
267
421
  method: 'POST',
@@ -272,9 +426,10 @@ async function verifyByokKey(key, provider) {
272
426
  },
273
427
  body: JSON.stringify({
274
428
  model: p.fastModel,
275
- max_tokens: 16,
429
+ max_tokens: 1,
276
430
  messages: [{ role: 'user', content: 'hi' }],
277
431
  }),
432
+ signal: AbortSignal.timeout(10_000),
278
433
  });
279
434
  if (!res.ok)
280
435
  return false;
@@ -287,8 +442,9 @@ async function verifyByokKey(key, provider) {
287
442
  headers: { 'Content-Type': 'application/json' },
288
443
  body: JSON.stringify({
289
444
  contents: [{ parts: [{ text: 'hi' }] }],
290
- generationConfig: { maxOutputTokens: 16 },
445
+ generationConfig: { maxOutputTokens: 1 },
291
446
  }),
447
+ signal: AbortSignal.timeout(10_000),
292
448
  });
293
449
  if (!res.ok)
294
450
  return false;
@@ -305,15 +461,16 @@ async function verifyByokKey(key, provider) {
305
461
  body: JSON.stringify({
306
462
  model: p.fastModel,
307
463
  messages: [{ role: 'user', content: 'hi' }],
308
- max_tokens: 16,
464
+ max_tokens: 1,
309
465
  }),
466
+ signal: AbortSignal.timeout(10_000),
310
467
  });
311
468
  if (!res.ok)
312
469
  return false;
313
470
  await res.json();
314
471
  return true;
315
472
  }
316
- // OpenAI-compatible (openai, mistral, xai, deepseek, groq, together, fireworks, perplexity)
473
+ // OpenAI-compatible
317
474
  const res = await fetch(p.apiUrl, {
318
475
  method: 'POST',
319
476
  headers: {
@@ -322,9 +479,10 @@ async function verifyByokKey(key, provider) {
322
479
  },
323
480
  body: JSON.stringify({
324
481
  model: p.fastModel,
325
- max_tokens: 16,
482
+ max_tokens: 1,
326
483
  messages: [{ role: 'user', content: 'hi' }],
327
484
  }),
485
+ signal: AbortSignal.timeout(10_000),
328
486
  });
329
487
  if (!res.ok)
330
488
  return false;
@@ -344,10 +502,8 @@ export async function setupByok(key, provider) {
344
502
  if (!valid)
345
503
  return false;
346
504
  const config = loadConfig() || {
347
- api_key: '',
348
505
  default_model: 'auto',
349
506
  default_agent: 'auto',
350
- api_base: API_BASE,
351
507
  };
352
508
  config.byok_key = key;
353
509
  config.byok_enabled = true;
@@ -363,55 +519,69 @@ export function disableByok() {
363
519
  saveConfig(config);
364
520
  }
365
521
  }
366
- /** Verify a Kernel API key */
367
- export async function verifyApiKey(key) {
522
+ /** Check if Ollama is running locally */
523
+ export async function isOllamaRunning() {
368
524
  try {
369
- const res = await fetch(`${API_BASE}/agents`, {
370
- headers: { Authorization: `Bearer ${key}` },
371
- });
372
- if (!res.ok) {
373
- const body = await res.json().catch(() => ({ error: 'Unknown error' }));
374
- return { valid: false, error: body.error || `HTTP ${res.status}` };
375
- }
376
- const data = await res.json();
377
- return { valid: true, tier: data.tier, agents: data.agents };
525
+ const res = await fetch('http://localhost:11434/api/tags', { signal: AbortSignal.timeout(2000) });
526
+ return res.ok;
378
527
  }
379
- catch (err) {
380
- return { valid: false, error: `Connection failed: ${err}` };
528
+ catch {
529
+ return false;
381
530
  }
382
531
  }
383
- /** Get usage stats */
384
- export async function getUsageStats() {
385
- const key = getApiKey();
386
- if (!key)
387
- return null;
532
+ /** List available Ollama models */
533
+ export async function listOllamaModels() {
388
534
  try {
389
- const res = await fetch(`${getApiBase()}/usage`, {
390
- headers: { Authorization: `Bearer ${key}` },
391
- });
535
+ const res = await fetch('http://localhost:11434/api/tags', { signal: AbortSignal.timeout(3000) });
392
536
  if (!res.ok)
393
- return null;
394
- return await res.json();
537
+ return [];
538
+ const data = await res.json();
539
+ return (data.models || []).map((m) => m.name);
395
540
  }
396
541
  catch {
397
- return null;
542
+ return [];
398
543
  }
399
544
  }
400
- /** First-run setup flow */
401
- export async function setupAuth(apiKey) {
402
- const result = await verifyApiKey(apiKey);
403
- if (!result.valid)
545
+ /** Set up Ollama as the active provider */
546
+ export async function setupOllama(model) {
547
+ const running = await isOllamaRunning();
548
+ if (!running)
404
549
  return false;
405
- const config = {
406
- api_key: apiKey,
550
+ const models = await listOllamaModels();
551
+ if (models.length === 0)
552
+ return false;
553
+ const config = loadConfig() || {
407
554
  default_model: 'auto',
408
555
  default_agent: 'auto',
409
- api_base: API_BASE,
410
- tier: result.tier,
411
- monthly_limit: undefined,
412
556
  };
557
+ config.byok_enabled = true;
558
+ config.byok_provider = 'ollama';
559
+ config.byok_key = 'local';
560
+ if (model) {
561
+ PROVIDERS.ollama.defaultModel = model;
562
+ }
563
+ saveConfig(config);
564
+ return true;
565
+ }
566
+ /** Set up OpenClaw as the active provider */
567
+ export async function setupOpenClaw(token) {
568
+ try {
569
+ const res = await fetch('http://127.0.0.1:18789/health', { signal: AbortSignal.timeout(3000) });
570
+ if (!res.ok)
571
+ return false;
572
+ }
573
+ catch {
574
+ return false;
575
+ }
576
+ const config = loadConfig() || {
577
+ default_model: 'auto',
578
+ default_agent: 'auto',
579
+ };
580
+ config.byok_enabled = true;
581
+ config.byok_provider = 'openclaw';
582
+ config.byok_key = token || 'local';
413
583
  saveConfig(config);
414
584
  return true;
415
585
  }
416
- export { KBOT_DIR, CONFIG_PATH, API_BASE };
586
+ export { KBOT_DIR, CONFIG_PATH };
417
587
  //# sourceMappingURL=auth.js.map
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.test.d.ts","sourceRoot":"","sources":["../src/auth.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ // K:BOT Auth Tests
2
+ import { describe, it } from 'node:test';
3
+ import assert from 'node:assert/strict';
4
+ import { detectProvider, isLocalProvider, isKeylessProvider, estimateCost, getProviderModel, selectOllamaModel, PROVIDERS, } from './auth.js';
5
+ describe('Provider Detection', () => {
6
+ it('detects Anthropic keys', () => {
7
+ assert.equal(detectProvider('sk-ant-abc123456789'), 'anthropic');
8
+ });
9
+ it('detects OpenAI project keys', () => {
10
+ assert.equal(detectProvider('sk-proj-abc123456789'), 'openai');
11
+ });
12
+ it('detects Google keys', () => {
13
+ assert.equal(detectProvider('AIzaSyA-test-key-12345'), 'google');
14
+ });
15
+ it('detects Groq keys', () => {
16
+ assert.equal(detectProvider('gsk_abcdefghijklmnop'), 'groq');
17
+ });
18
+ it('detects xAI keys', () => {
19
+ assert.equal(detectProvider('xai-abcdefghijklmnop'), 'xai');
20
+ });
21
+ it('falls back to openai for generic sk- keys', () => {
22
+ assert.equal(detectProvider('sk-generic-key-12345'), 'openai');
23
+ });
24
+ it('returns null for unrecognized keys', () => {
25
+ assert.equal(detectProvider('totally-unknown-format'), null);
26
+ });
27
+ });
28
+ describe('Provider Properties', () => {
29
+ it('identifies local providers', () => {
30
+ assert.equal(isLocalProvider('ollama'), true);
31
+ assert.equal(isLocalProvider('openclaw'), true);
32
+ assert.equal(isLocalProvider('anthropic'), false);
33
+ assert.equal(isLocalProvider('openai'), false);
34
+ });
35
+ it('identifies keyless providers', () => {
36
+ assert.equal(isKeylessProvider('ollama'), true);
37
+ assert.equal(isKeylessProvider('openclaw'), false);
38
+ assert.equal(isKeylessProvider('anthropic'), false);
39
+ });
40
+ it('all providers have required fields', () => {
41
+ for (const [name, p] of Object.entries(PROVIDERS)) {
42
+ assert.ok(p.name, `${name} missing name`);
43
+ assert.ok(p.apiUrl, `${name} missing apiUrl`);
44
+ assert.ok(p.apiStyle, `${name} missing apiStyle`);
45
+ assert.ok(p.defaultModel, `${name} missing defaultModel`);
46
+ assert.ok(p.fastModel, `${name} missing fastModel`);
47
+ assert.ok(typeof p.inputCost === 'number', `${name} missing inputCost`);
48
+ assert.ok(typeof p.outputCost === 'number', `${name} missing outputCost`);
49
+ }
50
+ });
51
+ it('local providers have zero cost', () => {
52
+ assert.equal(PROVIDERS.ollama.inputCost, 0);
53
+ assert.equal(PROVIDERS.ollama.outputCost, 0);
54
+ assert.equal(PROVIDERS.openclaw.inputCost, 0);
55
+ assert.equal(PROVIDERS.openclaw.outputCost, 0);
56
+ });
57
+ });
58
+ describe('Cost Estimation', () => {
59
+ it('calculates cost correctly', () => {
60
+ // Anthropic: $3/M input, $15/M output
61
+ const cost = estimateCost('anthropic', 1000, 500);
62
+ assert.ok(cost > 0);
63
+ assert.ok(cost < 1); // Should be small for 1500 tokens
64
+ });
65
+ it('returns zero for local providers', () => {
66
+ assert.equal(estimateCost('ollama', 10000, 5000), 0);
67
+ assert.equal(estimateCost('openclaw', 10000, 5000), 0);
68
+ });
69
+ });
70
+ describe('Model Selection', () => {
71
+ it('returns fast model for fast speed', () => {
72
+ const model = getProviderModel('anthropic', 'fast');
73
+ assert.equal(model, PROVIDERS.anthropic.fastModel);
74
+ });
75
+ it('returns default model for default speed', () => {
76
+ const model = getProviderModel('anthropic', 'default');
77
+ assert.equal(model, PROVIDERS.anthropic.defaultModel);
78
+ });
79
+ it('routes Ollama code tasks to code models', () => {
80
+ const model = selectOllamaModel('write a typescript function', ['qwen2.5-coder:7b', 'llama3.1:8b']);
81
+ assert.equal(model, 'qwen2.5-coder:7b');
82
+ });
83
+ it('routes Ollama general tasks to general models', () => {
84
+ const model = selectOllamaModel('what is the weather today', ['gemma3:12b', 'llama3.1:8b']);
85
+ // Should pick a general-purpose model
86
+ assert.ok(model);
87
+ });
88
+ });
89
+ //# sourceMappingURL=auth.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../src/auth.test.ts"],"names":[],"mappings":"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"}