@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.
- package/README.md +94 -0
- package/dist/agent.d.ts +9 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +576 -119
- package/dist/agent.js.map +1 -1
- package/dist/auth.d.ts +20 -35
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +236 -66
- package/dist/auth.js.map +1 -1
- package/dist/auth.test.d.ts +2 -0
- package/dist/auth.test.d.ts.map +1 -0
- package/dist/auth.test.js +89 -0
- package/dist/auth.test.js.map +1 -0
- package/dist/build-targets.d.ts +37 -0
- package/dist/build-targets.d.ts.map +1 -0
- package/dist/build-targets.js +507 -0
- package/dist/build-targets.js.map +1 -0
- package/dist/cli.js +1211 -131
- package/dist/cli.js.map +1 -1
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +72 -22
- package/dist/context.js.map +1 -1
- package/dist/hooks.d.ts +27 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +145 -0
- package/dist/hooks.js.map +1 -0
- package/dist/ide/acp-server.d.ts +6 -0
- package/dist/ide/acp-server.d.ts.map +1 -0
- package/dist/ide/acp-server.js +319 -0
- package/dist/ide/acp-server.js.map +1 -0
- package/dist/ide/bridge.d.ts +128 -0
- package/dist/ide/bridge.d.ts.map +1 -0
- package/dist/ide/bridge.js +185 -0
- package/dist/ide/bridge.js.map +1 -0
- package/dist/ide/index.d.ts +5 -0
- package/dist/ide/index.d.ts.map +1 -0
- package/dist/ide/index.js +11 -0
- package/dist/ide/index.js.map +1 -0
- package/dist/ide/lsp-bridge.d.ts +27 -0
- package/dist/ide/lsp-bridge.d.ts.map +1 -0
- package/dist/ide/lsp-bridge.js +267 -0
- package/dist/ide/lsp-bridge.js.map +1 -0
- package/dist/ide/mcp-server.d.ts +7 -0
- package/dist/ide/mcp-server.d.ts.map +1 -0
- package/dist/ide/mcp-server.js +451 -0
- package/dist/ide/mcp-server.js.map +1 -0
- package/dist/learning.d.ts +179 -0
- package/dist/learning.d.ts.map +1 -0
- package/dist/learning.js +829 -0
- package/dist/learning.js.map +1 -0
- package/dist/learning.test.d.ts +2 -0
- package/dist/learning.test.d.ts.map +1 -0
- package/dist/learning.test.js +115 -0
- package/dist/learning.test.js.map +1 -0
- package/dist/matrix.d.ts +49 -0
- package/dist/matrix.d.ts.map +1 -0
- package/dist/matrix.js +302 -0
- package/dist/matrix.js.map +1 -0
- package/dist/memory.d.ts +11 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +54 -2
- package/dist/memory.js.map +1 -1
- package/dist/multimodal.d.ts +57 -0
- package/dist/multimodal.d.ts.map +1 -0
- package/dist/multimodal.js +206 -0
- package/dist/multimodal.js.map +1 -0
- package/dist/permissions.d.ts +21 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +122 -0
- package/dist/permissions.js.map +1 -0
- package/dist/planner.d.ts +54 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +298 -0
- package/dist/planner.js.map +1 -0
- package/dist/plugins.d.ts +30 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +135 -0
- package/dist/plugins.js.map +1 -0
- package/dist/sessions.d.ts +38 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +177 -0
- package/dist/sessions.js.map +1 -0
- package/dist/streaming.d.ts +88 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +317 -0
- package/dist/streaming.js.map +1 -0
- package/dist/tools/background.d.ts +2 -0
- package/dist/tools/background.d.ts.map +1 -0
- package/dist/tools/background.js +163 -0
- package/dist/tools/background.js.map +1 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +26 -1
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/browser.js +7 -7
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/build-matrix.d.ts +2 -0
- package/dist/tools/build-matrix.d.ts.map +1 -0
- package/dist/tools/build-matrix.js +463 -0
- package/dist/tools/build-matrix.js.map +1 -0
- package/dist/tools/computer.js +5 -5
- package/dist/tools/computer.js.map +1 -1
- package/dist/tools/fetch.d.ts +2 -0
- package/dist/tools/fetch.d.ts.map +1 -0
- package/dist/tools/fetch.js +106 -0
- package/dist/tools/fetch.js.map +1 -0
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +112 -6
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/git.js +3 -3
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/github.d.ts +2 -0
- package/dist/tools/github.d.ts.map +1 -0
- package/dist/tools/github.js +196 -0
- package/dist/tools/github.js.map +1 -0
- package/dist/tools/index.d.ts +29 -5
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +136 -20
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/index.test.d.ts +2 -0
- package/dist/tools/index.test.d.ts.map +1 -0
- package/dist/tools/index.test.js +162 -0
- package/dist/tools/index.test.js.map +1 -0
- package/dist/tools/matrix.d.ts +2 -0
- package/dist/tools/matrix.d.ts.map +1 -0
- package/dist/tools/matrix.js +79 -0
- package/dist/tools/matrix.js.map +1 -0
- package/dist/tools/mcp-client.d.ts +2 -0
- package/dist/tools/mcp-client.d.ts.map +1 -0
- package/dist/tools/mcp-client.js +295 -0
- package/dist/tools/mcp-client.js.map +1 -0
- package/dist/tools/notebook.d.ts +2 -0
- package/dist/tools/notebook.d.ts.map +1 -0
- package/dist/tools/notebook.js +207 -0
- package/dist/tools/notebook.js.map +1 -0
- package/dist/tools/openclaw.d.ts +2 -0
- package/dist/tools/openclaw.d.ts.map +1 -0
- package/dist/tools/openclaw.js +187 -0
- package/dist/tools/openclaw.js.map +1 -0
- package/dist/tools/parallel.d.ts +2 -0
- package/dist/tools/parallel.d.ts.map +1 -0
- package/dist/tools/parallel.js +60 -0
- package/dist/tools/parallel.js.map +1 -0
- package/dist/tools/sandbox.d.ts +2 -0
- package/dist/tools/sandbox.d.ts.map +1 -0
- package/dist/tools/sandbox.js +352 -0
- package/dist/tools/sandbox.js.map +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +135 -28
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/subagent.d.ts +4 -0
- package/dist/tools/subagent.d.ts.map +1 -0
- package/dist/tools/subagent.js +260 -0
- package/dist/tools/subagent.js.map +1 -0
- package/dist/tools/tasks.d.ts +14 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +210 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/worktree.d.ts +2 -0
- package/dist/tools/worktree.d.ts.map +1 -0
- package/dist/tools/worktree.js +223 -0
- package/dist/tools/worktree.js.map +1 -0
- package/dist/tui.d.ts +73 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +257 -0
- package/dist/tui.js.map +1 -0
- package/dist/ui.d.ts +11 -19
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +143 -171
- package/dist/ui.js.map +1 -1
- package/dist/updater.d.ts +3 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +70 -0
- package/dist/updater.js.map +1 -0
- package/install.sh +5 -7
- 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
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const
|
|
158
|
-
|
|
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
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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
|
-
/**
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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
|
-
/**
|
|
367
|
-
export async function
|
|
522
|
+
/** Check if Ollama is running locally */
|
|
523
|
+
export async function isOllamaRunning() {
|
|
368
524
|
try {
|
|
369
|
-
const res = await fetch(
|
|
370
|
-
|
|
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
|
|
380
|
-
return
|
|
528
|
+
catch {
|
|
529
|
+
return false;
|
|
381
530
|
}
|
|
382
531
|
}
|
|
383
|
-
/**
|
|
384
|
-
export async function
|
|
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(
|
|
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
|
|
394
|
-
|
|
537
|
+
return [];
|
|
538
|
+
const data = await res.json();
|
|
539
|
+
return (data.models || []).map((m) => m.name);
|
|
395
540
|
}
|
|
396
541
|
catch {
|
|
397
|
-
return
|
|
542
|
+
return [];
|
|
398
543
|
}
|
|
399
544
|
}
|
|
400
|
-
/**
|
|
401
|
-
export async function
|
|
402
|
-
const
|
|
403
|
-
if (!
|
|
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
|
|
406
|
-
|
|
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
|
|
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 @@
|
|
|
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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"}
|