@kernel.chat/kbot 3.7.1 → 3.8.1

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.
@@ -0,0 +1,248 @@
1
+ // kbot Collective Learning — The Hive Mind
2
+ //
3
+ // 4,619 installs learning independently. This module connects them.
4
+ // Every kbot contributes anonymized signals. Every kbot benefits from all.
5
+ //
6
+ // What gets shared (anonymized):
7
+ // - Tool sequences that solved task types (not code, not file contents)
8
+ // - Agent routing accuracy per category
9
+ // - Strategy outcomes (which approach works for which task type)
10
+ //
11
+ // What NEVER gets shared:
12
+ // - Source code, file contents, API keys, user identity
13
+ // - Project names, file paths, conversation content
14
+ // - Anything from ~/.kbot/config.json
15
+ //
16
+ // The flywheel:
17
+ // 1 user → learns from own sessions
18
+ // 100 → patterns stabilize, routing gets accurate
19
+ // 1,000 → kbot knows best tool sequence for most tasks before you ask
20
+ // 10,000 → collective intelligence no single user could build alone
21
+ import { homedir } from 'node:os';
22
+ import { join } from 'node:path';
23
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
24
+ import { createHash } from 'node:crypto';
25
+ const ENGINE_URL = 'https://eoxxpyixdieprsxlpwcs.supabase.co/functions/v1/kbot-engine';
26
+ const KBOT_DIR = join(homedir(), '.kbot');
27
+ const COLLECTIVE_DIR = join(KBOT_DIR, 'collective');
28
+ const HINTS_FILE = join(COLLECTIVE_DIR, 'routing-hints.json');
29
+ const PATTERNS_FILE = join(COLLECTIVE_DIR, 'collective-patterns.json');
30
+ const OPT_FILE = join(COLLECTIVE_DIR, 'opt-in.json');
31
+ // ── Opt-in Management ──
32
+ function ensureDir() {
33
+ if (!existsSync(COLLECTIVE_DIR)) {
34
+ mkdirSync(COLLECTIVE_DIR, { recursive: true });
35
+ }
36
+ }
37
+ export function getOptInState() {
38
+ ensureDir();
39
+ try {
40
+ if (existsSync(OPT_FILE)) {
41
+ return JSON.parse(readFileSync(OPT_FILE, 'utf-8'));
42
+ }
43
+ }
44
+ catch { /* corrupt file */ }
45
+ return { enabled: false, opted_in_at: null, total_signals_sent: 0, last_signal_at: null };
46
+ }
47
+ export function setOptIn(enabled) {
48
+ ensureDir();
49
+ const state = getOptInState();
50
+ state.enabled = enabled;
51
+ if (enabled && !state.opted_in_at) {
52
+ state.opted_in_at = new Date().toISOString();
53
+ }
54
+ writeFileSync(OPT_FILE, JSON.stringify(state, null, 2));
55
+ }
56
+ export function isCollectiveEnabled() {
57
+ return getOptInState().enabled;
58
+ }
59
+ // ── Anonymization ──
60
+ /** Hash a message into a non-reversible identifier. No PII leaks. */
61
+ function hashMessage(message) {
62
+ const normalized = message.toLowerCase().trim().replace(/\s+/g, ' ');
63
+ return createHash('sha256').update(normalized).digest('hex').slice(0, 16);
64
+ }
65
+ /** Strip anything that could be PII from a tool sequence */
66
+ function sanitizeToolSequence(tools) {
67
+ // Only keep tool names, strip any args or paths that might have leaked in
68
+ return tools.map(t => t.replace(/[^a-z0-9_-]/gi, '').slice(0, 50)).filter(Boolean);
69
+ }
70
+ // ── Signal Sending ──
71
+ /** Send an anonymized routing signal to the collective */
72
+ export async function sendSignal(signal) {
73
+ if (!isCollectiveEnabled())
74
+ return false;
75
+ try {
76
+ const sanitized = {
77
+ message_hash: hashMessage(signal.message_hash),
78
+ message_category: signal.message_category,
79
+ message_length: Math.min(signal.message_length, 10000), // Cap length
80
+ routed_agent: signal.routed_agent,
81
+ classifier_confidence: Math.round(signal.classifier_confidence * 100) / 100,
82
+ was_rerouted: signal.was_rerouted,
83
+ response_quality: Math.round(signal.response_quality * 100) / 100,
84
+ tool_sequence: sanitizeToolSequence(signal.tool_sequence).slice(0, 20),
85
+ strategy: signal.strategy?.slice(0, 50) || 'default',
86
+ source: 'kbot',
87
+ };
88
+ const res = await fetch(`${ENGINE_URL}/collective`, {
89
+ method: 'POST',
90
+ headers: { 'Content-Type': 'application/json' },
91
+ body: JSON.stringify({ action: 'signal', ...sanitized }),
92
+ signal: AbortSignal.timeout(5_000),
93
+ });
94
+ if (res.ok) {
95
+ // Update local stats
96
+ const state = getOptInState();
97
+ state.total_signals_sent++;
98
+ state.last_signal_at = new Date().toISOString();
99
+ writeFileSync(OPT_FILE, JSON.stringify(state, null, 2));
100
+ return true;
101
+ }
102
+ return false;
103
+ }
104
+ catch {
105
+ return false; // Network errors are silent — never block the agent loop
106
+ }
107
+ }
108
+ // ── Signal Queue (batch sending) ──
109
+ const signalQueue = [];
110
+ let flushTimer = null;
111
+ const FLUSH_INTERVAL_MS = 10_000; // Batch signals every 10 seconds
112
+ /** Queue a signal for batch sending */
113
+ export function queueSignal(signal) {
114
+ if (!isCollectiveEnabled())
115
+ return;
116
+ signalQueue.push(signal);
117
+ if (!flushTimer) {
118
+ flushTimer = setTimeout(() => {
119
+ flushSignals();
120
+ flushTimer = null;
121
+ }, FLUSH_INTERVAL_MS);
122
+ // Don't keep the process alive just for signal flushing
123
+ if (flushTimer && typeof flushTimer === 'object' && 'unref' in flushTimer) {
124
+ flushTimer.unref();
125
+ }
126
+ }
127
+ }
128
+ /** Flush all queued signals (call on exit) */
129
+ export async function flushSignals() {
130
+ if (signalQueue.length === 0)
131
+ return;
132
+ const batch = signalQueue.splice(0, signalQueue.length);
133
+ // Send each signal sequentially to avoid race condition on opt-in.json
134
+ for (const s of batch) {
135
+ await sendSignal(s).catch(() => { });
136
+ }
137
+ }
138
+ // Register exit handlers to flush signals
139
+ process.on('beforeExit', () => { flushSignals().catch(() => { }); });
140
+ process.on('SIGINT', () => { flushSignals().catch(() => { }); process.exit(0); });
141
+ process.on('SIGTERM', () => { flushSignals().catch(() => { }); process.exit(0); });
142
+ // ── Pulling Collective Intelligence ──
143
+ /** Pull routing hints from the collective (proven patterns from all users) */
144
+ export async function pullCollectiveHints() {
145
+ try {
146
+ const res = await fetch(`${ENGINE_URL}/collective`, {
147
+ method: 'POST',
148
+ headers: { 'Content-Type': 'application/json' },
149
+ body: JSON.stringify({ action: 'hints' }),
150
+ signal: AbortSignal.timeout(5_000),
151
+ });
152
+ if (!res.ok)
153
+ return loadCachedHints();
154
+ const { hints } = await res.json();
155
+ if (hints && Array.isArray(hints) && hints.length > 0) {
156
+ // Cache locally for offline use
157
+ ensureDir();
158
+ writeFileSync(HINTS_FILE, JSON.stringify(hints, null, 2));
159
+ return hints;
160
+ }
161
+ return loadCachedHints();
162
+ }
163
+ catch {
164
+ return loadCachedHints(); // Offline fallback
165
+ }
166
+ }
167
+ /** Pull collective patterns (tool sequences, strategies) */
168
+ export async function pullCollectivePatterns() {
169
+ try {
170
+ const res = await fetch(`${ENGINE_URL}/collective`, {
171
+ method: 'POST',
172
+ headers: { 'Content-Type': 'application/json' },
173
+ body: JSON.stringify({ action: 'patterns' }),
174
+ signal: AbortSignal.timeout(5_000),
175
+ });
176
+ if (!res.ok)
177
+ return loadCachedPatterns();
178
+ const { patterns } = await res.json();
179
+ if (patterns && Array.isArray(patterns) && patterns.length > 0) {
180
+ ensureDir();
181
+ writeFileSync(PATTERNS_FILE, JSON.stringify(patterns, null, 2));
182
+ return patterns;
183
+ }
184
+ return loadCachedPatterns();
185
+ }
186
+ catch {
187
+ return loadCachedPatterns();
188
+ }
189
+ }
190
+ /** Load cached hints (for offline use) */
191
+ function loadCachedHints() {
192
+ try {
193
+ if (existsSync(HINTS_FILE)) {
194
+ return JSON.parse(readFileSync(HINTS_FILE, 'utf-8'));
195
+ }
196
+ }
197
+ catch { /* corrupt cache */ }
198
+ return [];
199
+ }
200
+ /** Load cached patterns (for offline use) */
201
+ function loadCachedPatterns() {
202
+ try {
203
+ if (existsSync(PATTERNS_FILE)) {
204
+ return JSON.parse(readFileSync(PATTERNS_FILE, 'utf-8'));
205
+ }
206
+ }
207
+ catch { /* corrupt cache */ }
208
+ return [];
209
+ }
210
+ // ── Integration Helpers ──
211
+ /** Get the best agent for a task category based on collective wisdom */
212
+ export function getCollectiveRecommendation(category) {
213
+ const hints = loadCachedHints();
214
+ const match = hints.find(h => h.category === category && h.confidence > 0.7 && h.sample_count > 50);
215
+ if (match) {
216
+ return { agent: match.best_agent, confidence: match.confidence };
217
+ }
218
+ return null;
219
+ }
220
+ /** Get the best tool sequence for a task category based on collective wisdom */
221
+ export function getCollectiveToolSequence(category) {
222
+ const patterns = loadCachedPatterns();
223
+ const match = patterns.find(p => p.type === 'tool_sequence' &&
224
+ p.pattern.category === category &&
225
+ p.confidence > 0.7 &&
226
+ p.sample_count > 50);
227
+ if (match && match.pattern.tools) {
228
+ return match.pattern.tools;
229
+ }
230
+ return null;
231
+ }
232
+ /** Format collective stats for display */
233
+ export function getCollectiveStats() {
234
+ const state = getOptInState();
235
+ const hints = loadCachedHints();
236
+ const patterns = loadCachedPatterns();
237
+ if (!state.enabled) {
238
+ return 'Collective learning: disabled. Run `kbot collective --enable` to join.';
239
+ }
240
+ return [
241
+ `Collective learning: enabled`,
242
+ `Signals sent: ${state.total_signals_sent}`,
243
+ `Last signal: ${state.last_signal_at || 'never'}`,
244
+ `Routing hints cached: ${hints.length}`,
245
+ `Patterns cached: ${patterns.length}`,
246
+ ].join('\n');
247
+ }
248
+ //# sourceMappingURL=collective.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collective.js","sourceRoot":"","sources":["../src/collective.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ describe('Tool Registry', () => {
33
33
  describe('Tier Gating', () => {
34
34
  it('free tier only gets free tools', () => {
35
35
  registerTool(makeTool({ name: 'tier_free', tier: 'free' }));
36
- registerTool(makeTool({ name: 'tier_pro', tier: 'free' }));
36
+ registerTool(makeTool({ name: 'tier_pro', tier: 'pro' }));
37
37
  registerTool(makeTool({ name: 'tier_enterprise', tier: 'enterprise' }));
38
38
  const freeNames = getToolsForTier('free').map(t => t.name);
39
39
  expect(freeNames).toContain('tier_free');
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/tools/index.test.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EACL,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EACnD,WAAW,EAAE,cAAc,EAAE,wBAAwB,GAEtD,MAAM,YAAY,CAAA;AAEnB,SAAS,QAAQ,CAAC,YAAqC,EAAE;IACvD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,aAAa;QAC1B,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;SACrE;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE;QAChD,IAAI,EAAE,MAAM;QACZ,GAAG,SAAS;KACb,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;QAC3C,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;QAC9C,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QACrC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC3D,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC1D,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;QAEvE,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC1D,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACxD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;SAC9B,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,sBAAsB;YAC5B,SAAS,EAAE,EAAE;SACd,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,YAAY,CAAC,QAAQ,CAAC;YACpB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC;SACnD,CAAC,CAAC,CAAA;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,EAAE;SACd,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,YAAY,CAAC,QAAQ,CAAC;YACpB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;gBACvD,OAAO,kBAAkB,CAAA;YAC3B,CAAC;SACF,CAAC,CAAC,CAAA;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,EAAE;SACd,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACrC,YAAY,CAAC,QAAQ,CAAC;YACpB,IAAI,EAAE,UAAU;YAChB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;SAC/B,CAAC,CAAC,CAAA;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YAC/B,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,EAAE;SACd,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;QAChD,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;QAChF,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;QAEhF,MAAM,CAAC,GAAG,cAAc,CAAC,cAAc,CAAC,CAAA;QACxC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,YAAY,CAAC,QAAQ,CAAC;YACpB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC;SACjD,CAAC,CAAC,CAAA;QACH,MAAM,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAA;QAEnE,MAAM,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,CAAA;QACvC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,YAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7D,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;QACpD,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAA;QACxB,MAAM,CAAC,GAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,CAAC,GAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAA;QACvD,MAAM,CAAC,GAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/tools/index.test.ts"],"names":[],"mappings":"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"}
package/dist/ui.js CHANGED
@@ -276,7 +276,7 @@ export function printHelp() {
276
276
  '',
277
277
  ` ${chalk.bold('Community')}`,
278
278
  ` ${DIM('─'.repeat(50))}`,
279
- ` ${CYAN('https://discord.gg/pYJn3hBqnz')} ${DIM('Discord')}`,
279
+ ` ${CYAN('https://discord.gg/kdMauM9abG')} ${DIM('Discord')}`,
280
280
  ` ${CYAN('https://kernel.chat')} ${DIM('Web companion')}`,
281
281
  ` ${CYAN('https://github.com/isaacsight/kernel')} ${DIM('GitHub')}`,
282
282
  '',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kernel.chat/kbot",
3
- "version": "3.7.1",
3
+ "version": "3.8.1",
4
4
  "description": "The only AI agent that builds its own tools. Self-evolving terminal AI: 290 tools, 23 agents, 20 providers. Runtime tool forging via forge_tool, Forge Registry for community tools, autopoietic health monitoring, immune self-audit agent. Cost-aware model routing, fallback chains, Bayesian skill routing. Embedded llama.cpp, MCP server, programmatic SDK. MIT.",
5
5
  "type": "module",
6
6
  "repository": {