@kernel.chat/kbot 3.34.0 → 3.34.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.
package/dist/dashboard.js CHANGED
@@ -1,104 +1,277 @@
1
- // kbot Dashboard — Live Learning Visualization
1
+ // kbot Dashboard — Live Learning Dashboard TUI
2
2
  //
3
- // Shows what kbot has learned, which tools it uses, and how it's growing.
4
- // "Making the invisible visible is what makes people tweet about it."
5
- import { readFileSync, existsSync } from 'fs';
3
+ // Usage: kbot dashboard
4
+ //
5
+ // Renders a live terminal dashboard showing learning stats, tool usage,
6
+ // agent routing, session history, and growth metrics.
7
+ // Refreshes every 5 seconds. Press 'q' to quit.
8
+ //
9
+ // Uses only Node built-ins + ANSI escape codes — no external deps.
10
+ import { readFileSync, existsSync, readdirSync } from 'fs';
6
11
  import { homedir } from 'os';
7
12
  import { join } from 'path';
13
+ import { createRequire } from 'module';
14
+ const __require = createRequire(import.meta.url);
15
+ const PKG_VERSION = __require('../package.json').version;
8
16
  const KBOT_DIR = join(homedir(), '.kbot');
9
- const BOLD = '\x1b[1m';
10
- const DIM = '\x1b[2m';
11
- const RESET = '\x1b[0m';
12
- const GREEN = '\x1b[32m';
13
- const PURPLE = '\x1b[35m';
14
- const CYAN = '\x1b[36m';
15
- const YELLOW = '\x1b[33m';
16
- function loadJson(filename) {
17
- const path = join(KBOT_DIR, filename);
18
- try {
19
- if (existsSync(path))
20
- return JSON.parse(readFileSync(path, 'utf-8'));
21
- }
22
- catch { /* ignore */ }
23
- return null;
17
+ const MEMORY_DIR = join(KBOT_DIR, 'memory');
18
+ const SESSIONS_DIR = join(KBOT_DIR, 'sessions');
19
+ // ── ANSI escape codes ──
20
+ const ESC = '\x1b';
21
+ const BOLD = `${ESC}[1m`;
22
+ const DIM_START = `${ESC}[2m`;
23
+ const RESET = `${ESC}[0m`;
24
+ const GREEN = `${ESC}[32m`;
25
+ const RED = `${ESC}[31m`;
26
+ const PURPLE = `${ESC}[35m`;
27
+ const CYAN = `${ESC}[36m`;
28
+ const YELLOW = `${ESC}[33m`;
29
+ const WHITE = `${ESC}[37m`;
30
+ function dim(s) { return `${DIM_START}${s}${RESET}`; }
31
+ function bold(s) { return `${BOLD}${s}${RESET}`; }
32
+ function purple(s) { return `${PURPLE}${s}${RESET}`; }
33
+ function green(s) { return `${GREEN}${s}${RESET}`; }
34
+ function cyan(s) { return `${CYAN}${s}${RESET}`; }
35
+ function yellow(s) { return `${YELLOW}${s}${RESET}`; }
36
+ function white(s) { return `${WHITE}${s}${RESET}`; }
37
+ // ── Box drawing ──
38
+ const BOX = { tl: '\u256d', tr: '\u256e', bl: '\u2570', br: '\u256f', h: '\u2500', v: '\u2502' };
39
+ function stripAnsi(str) {
40
+ return str.replace(/\x1b\[[0-9;]*m/g, '');
24
41
  }
25
42
  function bar(value, max, width = 20) {
26
43
  const filled = Math.round((value / Math.max(max, 1)) * width);
27
- return GREEN + ''.repeat(filled) + DIM + ''.repeat(width - filled) + RESET;
44
+ return GREEN + '\u2588'.repeat(filled) + DIM_START + '\u2591'.repeat(width - filled) + RESET;
45
+ }
46
+ function loadJSON(path, fallback) {
47
+ if (!existsSync(path))
48
+ return fallback;
49
+ try {
50
+ return JSON.parse(readFileSync(path, 'utf-8'));
51
+ }
52
+ catch {
53
+ return fallback;
54
+ }
55
+ }
56
+ const DEFAULT_PROFILE = {
57
+ responseStyle: 'auto',
58
+ techStack: [],
59
+ taskPatterns: {},
60
+ preferredAgents: {},
61
+ totalMessages: 0,
62
+ totalTokens: 0,
63
+ tokensSaved: 0,
64
+ avgTokensPerMessage: 0,
65
+ sessions: 0,
66
+ };
67
+ function loadDashboardData() {
68
+ const patterns = loadJSON(join(MEMORY_DIR, 'patterns.json'), []);
69
+ const solutions = loadJSON(join(MEMORY_DIR, 'solutions.json'), []);
70
+ const knowledge = loadJSON(join(MEMORY_DIR, 'knowledge.json'), []);
71
+ const profile = loadJSON(join(MEMORY_DIR, 'profile.json'), DEFAULT_PROFILE);
72
+ const routingHistory = loadJSON(join(MEMORY_DIR, 'routing-history.json'), []);
73
+ // Load sessions from directory listing
74
+ const sessions = [];
75
+ if (existsSync(SESSIONS_DIR)) {
76
+ const files = readdirSync(SESSIONS_DIR).filter(f => f.endsWith('.json'));
77
+ for (const file of files) {
78
+ try {
79
+ const raw = JSON.parse(readFileSync(join(SESSIONS_DIR, file), 'utf-8'));
80
+ sessions.push({
81
+ id: raw.id,
82
+ name: raw.name,
83
+ updated: raw.updated,
84
+ turnCount: raw.turnCount,
85
+ agent: raw.agent,
86
+ });
87
+ }
88
+ catch {
89
+ continue;
90
+ }
91
+ }
92
+ sessions.sort((a, b) => new Date(b.updated).getTime() - new Date(a.updated).getTime());
93
+ }
94
+ return { patterns, solutions, knowledge, profile, routingHistory, sessions };
28
95
  }
29
- export async function runDashboard(version) {
30
- const ver = version || '3.34.0';
31
- const patterns = loadJson('patterns.json');
32
- const solutions = loadJson('solutions.json');
33
- const sessions = loadJson('sessions.json');
34
- const profile = loadJson('profile.json');
35
- const metrics = loadJson('metrics.json');
36
- const routing = loadJson('routing.json');
37
- const memory = loadJson('memory.json');
38
- const patternCount = Array.isArray(patterns) ? patterns.length : 0;
39
- const solutionCount = Array.isArray(solutions) ? solutions.length : 0;
40
- const sessionCount = Array.isArray(sessions) ? sessions.length : 0;
41
- const memoryCount = Array.isArray(memory) ? memory.length : 0;
42
- // Tool stats
43
- const toolEntries = metrics && typeof metrics === 'object'
44
- ? Object.entries(metrics)
45
- .filter(([, v]) => v && typeof v.calls === 'number')
46
- .sort((a, b) => (b[1].calls || 0) - (a[1].calls || 0))
47
- : [];
48
- const totalCalls = toolEntries.reduce((sum, [, v]) => sum + (v.calls || 0), 0);
49
- const maxCalls = toolEntries.length > 0 ? (toolEntries[0][1].calls || 1) : 1;
50
- // Agent routing stats
51
- const agentEntries = routing && typeof routing === 'object'
52
- ? Object.entries(routing)
53
- .filter(([, v]) => v && typeof v.wins === 'number')
54
- .sort((a, b) => (b[1].wins || 0) - (a[1].wins || 0))
55
- : [];
56
- console.log(`
57
- ${PURPLE}${BOLD}╔══════════════════════════════════════════════════╗${RESET}
58
- ${PURPLE}${BOLD}║ kbot Dashboard v${ver.padEnd(22)}║${RESET}
59
- ${PURPLE}${BOLD}╚══════════════════════════════════════════════════╝${RESET}
60
-
61
- ${CYAN}${BOLD}📊 Learning Engine${RESET}
62
- Patterns learned: ${BOLD}${patternCount}${RESET}
63
- Solutions stored: ${BOLD}${solutionCount}${RESET}
64
- Memories saved: ${BOLD}${memoryCount}${RESET}
65
- Sessions total: ${BOLD}${sessionCount}${RESET}
66
- ${DIM}Growth: ${patternCount > 0 && sessionCount > 0 ? (patternCount / sessionCount).toFixed(1) : '0'} patterns/session${RESET}
67
-
68
- ${YELLOW}${BOLD}🔧 Top Tools${RESET} ${DIM}(${totalCalls} total calls)${RESET}`);
69
- const topTools = toolEntries.slice(0, 8);
96
+ // ── Render ──
97
+ function render(data) {
98
+ const cols = process.stdout.columns || 80;
99
+ const panelWidth = Math.min(cols - 2, 78);
100
+ const halfWidth = Math.floor((panelWidth - 1) / 2);
101
+ const barWidth = Math.max(8, halfWidth - 22);
102
+ const lines = [];
103
+ // Clear screen and move cursor to top
104
+ process.stdout.write(`${ESC}[2J${ESC}[H`);
105
+ // ── Header ──
106
+ const now = new Date().toLocaleTimeString();
107
+ lines.push('');
108
+ lines.push(` ${purple('\u25cf')} ${bold(`kbot Dashboard \u2014 v${PKG_VERSION}`)} ${dim(now)} ${dim('(q to quit)')}`);
109
+ lines.push(` ${dim(BOX.h.repeat(panelWidth))}`);
110
+ // ── Learning Stats ──
111
+ const totalPatterns = data.patterns.length;
112
+ const totalSolutions = data.solutions.length;
113
+ const totalKnowledge = data.knowledge.length;
114
+ const totalMessages = data.profile.totalMessages;
115
+ const tokensSaved = data.profile.tokensSaved;
116
+ const tokensSavedStr = tokensSaved > 1000 ? `${(tokensSaved / 1000).toFixed(1)}k` : String(tokensSaved);
117
+ // Classify patterns by tool bucket
118
+ const patternsByCategory = {};
119
+ for (const p of data.patterns) {
120
+ const cat = p.toolSequence[0] || 'general';
121
+ const bucket = cat.includes('file') || cat.includes('read') || cat.includes('write') ? 'file-ops'
122
+ : cat.includes('git') ? 'git'
123
+ : cat.includes('bash') || cat.includes('shell') ? 'shell'
124
+ : cat.includes('search') || cat.includes('grep') ? 'search'
125
+ : cat.includes('web') || cat.includes('fetch') ? 'web'
126
+ : 'other';
127
+ patternsByCategory[bucket] = (patternsByCategory[bucket] || 0) + 1;
128
+ }
129
+ lines.push('');
130
+ lines.push(` ${cyan(bold('Learning Engine'))}`);
131
+ lines.push(` Patterns: ${bold(String(totalPatterns))}`);
132
+ lines.push(` Solutions: ${bold(String(totalSolutions))}`);
133
+ lines.push(` Knowledge: ${bold(String(totalKnowledge))}`);
134
+ lines.push(` Messages: ${dim(String(totalMessages))}`);
135
+ lines.push(` Tokens saved: ${green(tokensSavedStr)}`);
136
+ const catEntries = Object.entries(patternsByCategory).sort((a, b) => b[1] - a[1]);
137
+ if (catEntries.length > 0) {
138
+ lines.push('');
139
+ lines.push(` ${dim('Patterns by category:')}`);
140
+ const maxCat = catEntries[0][1];
141
+ for (const [cat, count] of catEntries.slice(0, 5)) {
142
+ lines.push(` ${cat.padEnd(14)} ${bar(count, maxCat, barWidth)} ${dim(String(count))}`);
143
+ }
144
+ }
145
+ // ── Top Tools ──
146
+ const toolCounts = {};
147
+ for (const p of data.patterns) {
148
+ for (const t of p.toolSequence) {
149
+ toolCounts[t] = (toolCounts[t] || 0) + p.hits;
150
+ }
151
+ }
152
+ const topTools = Object.entries(toolCounts).sort((a, b) => b[1] - a[1]).slice(0, 8);
153
+ lines.push('');
154
+ lines.push(` ${dim(BOX.h.repeat(panelWidth))}`);
155
+ lines.push(` ${yellow(bold('Top Tools'))}`);
70
156
  if (topTools.length > 0) {
71
- for (const [name, v] of topTools) {
72
- const calls = v.calls || 0;
73
- console.log(` ${bar(calls, maxCalls)} ${name} ${DIM}(${calls})${RESET}`);
157
+ const maxTool = topTools[0][1];
158
+ for (const [tool, count] of topTools) {
159
+ lines.push(` ${tool.padEnd(14)} ${bar(count, maxTool, barWidth)} ${dim(String(count))}`);
74
160
  }
75
161
  }
76
162
  else {
77
- console.log(` ${DIM}No tool usage data yet. Start using kbot to populate.${RESET}`);
78
- }
79
- console.log(`\n${GREEN}${BOLD}🤖 Agent Routing${RESET}`);
80
- if (agentEntries.length > 0) {
81
- for (const [name, v] of agentEntries.slice(0, 6)) {
82
- const wins = v.wins || 0;
83
- const total = wins + (v.losses || 0);
84
- const rate = total > 0 ? Math.round((wins / total) * 100) : 0;
85
- console.log(` ${name.padEnd(15)} ${rate}% success ${DIM}(${wins}/${total})${RESET}`);
163
+ lines.push(` ${dim('No tool usage data yet. Start using kbot to populate.')}`);
164
+ }
165
+ // ── Agent Routing ──
166
+ const agentCounts = { ...data.profile.preferredAgents };
167
+ for (const r of data.routingHistory) {
168
+ agentCounts[r.agent] = (agentCounts[r.agent] || 0) + 1;
169
+ }
170
+ const topAgents = Object.entries(agentCounts).sort((a, b) => b[1] - a[1]).slice(0, 7);
171
+ // Routing method breakdown
172
+ const methodCounts = {};
173
+ for (const r of data.routingHistory) {
174
+ methodCounts[r.method] = (methodCounts[r.method] || 0) + 1;
175
+ }
176
+ const totalRoutes = data.routingHistory.length;
177
+ const cached = totalRoutes - (methodCounts['llm'] || 0);
178
+ const cacheRate = totalRoutes > 0 ? Math.round((cached / totalRoutes) * 100) : 0;
179
+ lines.push('');
180
+ lines.push(` ${dim(BOX.h.repeat(panelWidth))}`);
181
+ lines.push(` ${green(bold('Agent Routing'))}`);
182
+ if (topAgents.length > 0) {
183
+ const maxAgent = topAgents[0][1];
184
+ for (const [agent, count] of topAgents) {
185
+ lines.push(` ${agent.padEnd(14)} ${bar(count, maxAgent, barWidth)} ${dim(String(count))}`);
86
186
  }
187
+ lines.push(` ${dim(`Routes: ${totalRoutes} Cache hit: ${cacheRate}%`)}`);
87
188
  }
88
189
  else {
89
- console.log(` ${DIM}No routing data yet. kbot learns which agents perform best over time.${RESET}`);
190
+ lines.push(` ${dim('No routing data yet. kbot learns which agents perform best over time.')}`);
191
+ }
192
+ // ── Sessions ──
193
+ const totalSessions = data.sessions.length;
194
+ const profileSessions = data.profile.sessions || totalSessions;
195
+ const lastSession = data.sessions[0];
196
+ lines.push('');
197
+ lines.push(` ${dim(BOX.h.repeat(panelWidth))}`);
198
+ lines.push(` ${purple(bold('Sessions'))}`);
199
+ lines.push(` Total: ${bold(String(totalSessions))} saved sessions (${dim(`${profileSessions} lifetime`)})`);
200
+ if (lastSession) {
201
+ const d = new Date(lastSession.updated);
202
+ lines.push(` Last: ${dim(d.toLocaleDateString())} ${dim(d.toLocaleTimeString())} ${dim(`\u2014 ${lastSession.name}`)}`);
90
203
  }
91
- if (profile && typeof profile === 'object') {
92
- console.log(`\n${PURPLE}${BOLD}👤 User Profile${RESET}`);
93
- const entries = Object.entries(profile).slice(0, 4);
94
- for (const [key, value] of entries) {
95
- console.log(` ${key}: ${DIM}${String(value).slice(0, 60)}${RESET}`);
204
+ const recentSessions = data.sessions.slice(0, 5);
205
+ if (recentSessions.length > 0) {
206
+ lines.push(` ${dim('Recent:')}`);
207
+ for (const s of recentSessions) {
208
+ const d = new Date(s.updated);
209
+ const date = `${d.getMonth() + 1}/${d.getDate()}`;
210
+ const name = s.name.length > panelWidth - 20 ? s.name.slice(0, panelWidth - 23) + '...' : s.name;
211
+ lines.push(` ${dim(date)} ${name} ${dim(`(${s.turnCount} turns)`)}`);
96
212
  }
97
213
  }
98
- console.log(`
99
- ${DIM}─────────────────────────────────────────────────${RESET}
100
- ${DIM}kbot v${ver} · ${patternCount} patterns · ${totalCalls} tool calls · ${sessionCount} sessions${RESET}
101
- ${DIM}kernel.chat · github.com/isaacsight/kernel${RESET}
102
- `);
214
+ // ── Footer: Growth summary ──
215
+ lines.push('');
216
+ lines.push(` ${dim(BOX.h.repeat(panelWidth))}`);
217
+ const growthMsg = totalPatterns > 0
218
+ ? `kbot has learned ${bold(String(totalPatterns))} patterns across ${bold(String(profileSessions))} sessions`
219
+ : 'kbot is ready to learn \u2014 start a conversation to build patterns';
220
+ lines.push(` ${purple('\u25cf')} ${growthMsg}`);
221
+ const techStack = data.profile.techStack.slice(0, 5).join(', ');
222
+ if (techStack) {
223
+ lines.push(` ${dim(`Tech stack: ${techStack}`)}`);
224
+ }
225
+ lines.push(` ${dim('Refreshes every 5s \u00b7 Press q to quit')}`);
226
+ lines.push('');
227
+ process.stdout.write(lines.join('\n'));
228
+ }
229
+ // ── Main loop ──
230
+ export async function runDashboard() {
231
+ // Validate TTY
232
+ if (!process.stdout.isTTY) {
233
+ console.error('kbot dashboard requires an interactive terminal.');
234
+ process.exit(1);
235
+ }
236
+ // Hide cursor
237
+ process.stdout.write(`${ESC}[?25l`);
238
+ // Clean exit
239
+ const cleanup = () => {
240
+ process.stdout.write(`${ESC}[?25h`); // show cursor
241
+ process.stdout.write(`${ESC}[2J${ESC}[H`); // clear screen
242
+ process.stdout.write(`${purple('\u25cf')} Dashboard closed.\n`);
243
+ process.exit(0);
244
+ };
245
+ process.on('SIGINT', cleanup);
246
+ process.on('SIGTERM', cleanup);
247
+ // Enable raw mode for keypress detection
248
+ if (process.stdin.setRawMode) {
249
+ process.stdin.setRawMode(true);
250
+ }
251
+ process.stdin.resume();
252
+ process.stdin.setEncoding('utf-8');
253
+ process.stdin.on('data', (key) => {
254
+ // q, Q, or Ctrl+C
255
+ if (key === 'q' || key === 'Q' || key === '\x03') {
256
+ cleanup();
257
+ }
258
+ });
259
+ // Initial render
260
+ const data = loadDashboardData();
261
+ render(data);
262
+ // Refresh loop
263
+ const interval = setInterval(() => {
264
+ try {
265
+ const freshData = loadDashboardData();
266
+ render(freshData);
267
+ }
268
+ catch {
269
+ // Non-fatal — skip this render cycle
270
+ }
271
+ }, 5000);
272
+ // Keep process alive until cleanup() is called
273
+ await new Promise(() => {
274
+ process.on('exit', () => clearInterval(interval));
275
+ });
103
276
  }
104
277
  //# sourceMappingURL=dashboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kernel.chat/kbot",
3
- "version": "3.34.0",
3
+ "version": "3.34.1",
4
4
  "description": "The only AI agent that builds its own tools — and defends itself. Self-Defense System: HMAC memory integrity, prompt injection detection, knowledge sanitization, forge verification, anomaly detection, incident logging. Cybersecurity tools: dep_audit, secret_scan, ssl_check, headers_check, cve_lookup, port_scan, owasp_check. Machine-aware situated intelligence: full hardware profiling (CPU, GPU, RAM, display, battery, dev tools), resource-adaptive tool pipeline, memory-pressure throttling, GPU-accelerated model routing. Multi-channel cognitive engine: email agent, iMessage agent, consultation pipeline, Trader agent with paper trading & DeFi, 26 specialist agents, 345+ tools, 20 providers. Finance stack: 31 tools across market data, wallet & swaps, stocks, and sentiment. Synthesis Engine: closed-loop intelligence compounding. Runtime tool forging, Forge Registry, autopoietic health, immune self-audit. Cost-aware model routing, fallback chains, Bayesian skill routing. 11 local models (Llama 3.3, Qwen 3, DeepSeek R1, Codestral 22B). Embedded llama.cpp, MCP server, SDK. MIT.",
5
5
  "type": "module",
6
6
  "repository": {