@kernel.chat/kbot 3.99.26 → 3.99.28
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/dist/agent.js +35 -8
- package/package.json +1 -1
package/dist/agent.js
CHANGED
|
@@ -112,14 +112,16 @@ let weakModelWarningShown = false;
|
|
|
112
112
|
// ── Local-first execution ──
|
|
113
113
|
async function tryLocalFirst(message) {
|
|
114
114
|
const lower = message.toLowerCase().trim();
|
|
115
|
-
// Pure-arithmetic short-circuit.
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
// answer
|
|
121
|
-
|
|
122
|
-
|
|
115
|
+
// Pure-arithmetic short-circuit. If the message contains exactly one
|
|
116
|
+
// arithmetic expression and reads as a request for the numeric answer
|
|
117
|
+
// ("what is X", "calculate X", or bare X), return the JS-computed answer
|
|
118
|
+
// directly — never involve an LLM. Eval on 2026-04-20 showed gemma4:latest
|
|
119
|
+
// ignoring an injected MATH GUARD ("123 % 7 = 4" prepended to the user
|
|
120
|
+
// message, answer still "2"). If the answer is deterministic, do not ask
|
|
121
|
+
// the model.
|
|
122
|
+
const looksArithmetic = /\b(?:what\s+is|what['']s|compute|calculate|evaluate)\b/i.test(lower)
|
|
123
|
+
|| /^[-\d.\s+*×/÷%()?]+$/.test(lower);
|
|
124
|
+
if (looksArithmetic && message.length < 200) {
|
|
123
125
|
const { extractArithmetic } = await import('./math-guard.js');
|
|
124
126
|
const exprs = extractArithmetic(message);
|
|
125
127
|
if (exprs.length === 1) {
|
|
@@ -170,6 +172,31 @@ async function tryLocalFirst(message) {
|
|
|
170
172
|
if (lower === 'pwd' || lower === 'where am i') {
|
|
171
173
|
return process.cwd();
|
|
172
174
|
}
|
|
175
|
+
// Identity short-circuit — deterministic answers for self-queries that
|
|
176
|
+
// small models confabulate on. Eval 2026-04-20 showed gemma4:latest
|
|
177
|
+
// answering "v3.99.14" for "what version are you" even with the IDENTITY
|
|
178
|
+
// GUARD block prepended to the user message. If the answer is derivable
|
|
179
|
+
// from package.json + config, return it directly.
|
|
180
|
+
if (message.length < 120) {
|
|
181
|
+
const { detectIdentityQuery } = await import('./identity-guard.js');
|
|
182
|
+
const kinds = detectIdentityQuery(message);
|
|
183
|
+
if (kinds.size > 0) {
|
|
184
|
+
try {
|
|
185
|
+
const { readFileSync } = await import('node:fs');
|
|
186
|
+
const { fileURLToPath } = await import('node:url');
|
|
187
|
+
const { dirname, join } = await import('node:path');
|
|
188
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
189
|
+
const pkg = JSON.parse(readFileSync(join(here, '..', 'package.json'), 'utf-8'));
|
|
190
|
+
if (kinds.has('version') && !kinds.has('product') && !kinds.has('model') && !kinds.has('provider')) {
|
|
191
|
+
return `v${pkg.version}`;
|
|
192
|
+
}
|
|
193
|
+
if (kinds.has('product') || kinds.has('version')) {
|
|
194
|
+
return `@kernel.chat/kbot v${pkg.version} — an open-source terminal AI agent.`;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
catch { /* fall through to LLM */ }
|
|
198
|
+
}
|
|
199
|
+
}
|
|
173
200
|
return null;
|
|
174
201
|
}
|
|
175
202
|
/** Anthropic Messages API (Claude) */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kernel.chat/kbot",
|
|
3
|
-
"version": "3.99.
|
|
3
|
+
"version": "3.99.28",
|
|
4
4
|
"description": "Open-source terminal AI agent. 787+ tools, 35 agents, 20 providers. Dreams, learns, watches your system. Controls your phone. Fully local, fully sovereign. MIT.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|