@kernel.chat/kbot 3.34.1 → 3.35.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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=kbot-channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbot-channel.d.ts","sourceRoot":"","sources":["../../src/channels/kbot-channel.ts"],"names":[],"mappings":""}
@@ -0,0 +1,319 @@
1
+ #!/usr/bin/env node
2
+ // kbot Channel for Claude Code
3
+ //
4
+ // Bridges kbot's cognitive engine (374+ tools, 41 agents, learning engine)
5
+ // into Claude Code sessions via the Channel protocol.
6
+ //
7
+ // Architecture:
8
+ // External world (WhatsApp, Telegram, Slack via OpenClaw)
9
+ // ↕ kbot Channel (this file)
10
+ // ↕ Claude Code session
11
+ //
12
+ // One-way events: kbot pushes learning updates, agent routing, forge notifications
13
+ // Two-way: Claude Code can reply through kbot to any OpenClaw platform
14
+ // Permission relay: approve/deny tool use from your phone via OpenClaw
15
+ //
16
+ // Usage:
17
+ // Add to .mcp.json: { "kbot-channel": { "command": "node", "args": ["path/to/kbot-channel.js"] } }
18
+ // Start: claude --channels server:kbot-channel
19
+ //
20
+ // Jensen Huang: "Agents are the iPhone of tokens."
21
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
22
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
23
+ import { ListToolsRequestSchema, CallToolRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
24
+ import { createServer } from 'node:http';
25
+ import { readFileSync, existsSync } from 'node:fs';
26
+ import { homedir } from 'node:os';
27
+ import { join } from 'node:path';
28
+ import { z } from 'zod';
29
+ // ── Config ──────────────────────────────────────────────────────────────────
30
+ const KBOT_PORT = parseInt(process.env.KBOT_CHANNEL_PORT || '7438', 10);
31
+ const OPENCLAW_URL = process.env.OPENCLAW_GATEWAY_URL || 'http://127.0.0.1:18789';
32
+ const KBOT_DIR = join(homedir(), '.kbot');
33
+ // ── Outbound: SSE listeners for testing / monitoring ────────────────────────
34
+ const listeners = new Set();
35
+ function broadcast(text) {
36
+ const chunk = text.split('\n').map(l => `data: ${l}\n`).join('') + '\n';
37
+ for (const emit of listeners)
38
+ emit(chunk);
39
+ }
40
+ // ── Sender allowlist ────────────────────────────────────────────────────────
41
+ function loadAllowlist() {
42
+ const path = join(KBOT_DIR, 'channel-allowlist.json');
43
+ try {
44
+ if (existsSync(path)) {
45
+ const list = JSON.parse(readFileSync(path, 'utf-8'));
46
+ return new Set(list);
47
+ }
48
+ }
49
+ catch { /* ignore */ }
50
+ // Default: allow local requests
51
+ return new Set(['local', 'kbot', 'openclaw']);
52
+ }
53
+ const allowed = loadAllowlist();
54
+ // ── MCP Server with Channel capability ──────────────────────────────────────
55
+ const mcp = new Server({ name: 'kbot', version: '3.34.2' }, {
56
+ capabilities: {
57
+ experimental: {
58
+ 'claude/channel': {},
59
+ 'claude/channel/permission': {},
60
+ },
61
+ tools: {},
62
+ },
63
+ instructions: `You are connected to kbot — a self-improving AI agent with 374+ tools and 41 specialist agents.
64
+
65
+ Events arrive as <channel source="kbot" ...>. They include:
66
+ - Messages from external platforms via OpenClaw (WhatsApp, Telegram, Slack, Discord, iMessage)
67
+ - Learning engine updates (new patterns, routing changes)
68
+ - Forge notifications (new tools created or installed)
69
+ - Agent status reports
70
+ - Security alerts from the self-defense system
71
+
72
+ For messages from people (has chat_id and platform attributes):
73
+ Reply using the kbot_reply tool, passing chat_id and platform from the tag.
74
+
75
+ For system events (learning, forge, security):
76
+ Read and act as appropriate. No reply expected.
77
+
78
+ You can also use:
79
+ kbot_agent — delegate a task to one of kbot's 26 specialist agents
80
+ kbot_tools — list or execute any of kbot's 374+ tools
81
+ kbot_status — check kbot's health, learning stats, and active sessions
82
+
83
+ kbot learns from every interaction. Patterns it extracts improve future routing and responses.`,
84
+ });
85
+ // ── Reply tool: Claude sends messages back through kbot ─────────────────────
86
+ mcp.setRequestHandler(ListToolsRequestSchema, async () => ({
87
+ tools: [
88
+ {
89
+ name: 'kbot_reply',
90
+ description: 'Reply to a message through kbot. Routes through OpenClaw to WhatsApp, Telegram, Slack, Discord, iMessage, or any connected platform.',
91
+ inputSchema: {
92
+ type: 'object',
93
+ properties: {
94
+ chat_id: { type: 'string', description: 'The conversation ID from the inbound channel tag' },
95
+ platform: { type: 'string', description: 'Platform to reply on (from the channel tag)' },
96
+ text: { type: 'string', description: 'The message to send' },
97
+ },
98
+ required: ['chat_id', 'text'],
99
+ },
100
+ },
101
+ {
102
+ name: 'kbot_agent',
103
+ description: 'Delegate a task to one of kbot\'s 26 specialist agents. Agents: kernel, coder, researcher, writer, analyst, aesthete, guardian, curator, strategist, infrastructure, quant, investigator, oracle, chronist, sage, communicator, adapter, trader.',
104
+ inputSchema: {
105
+ type: 'object',
106
+ properties: {
107
+ agent: { type: 'string', description: 'Agent to route to (or "auto" for Bayesian routing)' },
108
+ task: { type: 'string', description: 'The task or question' },
109
+ },
110
+ required: ['task'],
111
+ },
112
+ },
113
+ {
114
+ name: 'kbot_tools',
115
+ description: 'List or execute kbot tools. With action="list", returns available tools. With action="execute", runs a specific tool.',
116
+ inputSchema: {
117
+ type: 'object',
118
+ properties: {
119
+ action: { type: 'string', description: '"list" or "execute"' },
120
+ tool_name: { type: 'string', description: 'Tool to execute (for action="execute")' },
121
+ args: { type: 'object', description: 'Tool arguments (for action="execute")' },
122
+ filter: { type: 'string', description: 'Filter tools by keyword (for action="list")' },
123
+ },
124
+ required: ['action'],
125
+ },
126
+ },
127
+ {
128
+ name: 'kbot_status',
129
+ description: 'Get kbot\'s current status: version, tool count, learning stats, active sessions, defense health.',
130
+ inputSchema: {
131
+ type: 'object',
132
+ properties: {},
133
+ },
134
+ },
135
+ ],
136
+ }));
137
+ // ── Tool execution ──────────────────────────────────────────────────────────
138
+ async function kbotApiFetch(path, options) {
139
+ const KBOT_API = process.env.KBOT_SERVE_URL || 'http://127.0.0.1:7437';
140
+ const res = await fetch(`${KBOT_API}${path}`, {
141
+ method: options?.method || 'GET',
142
+ headers: { 'Content-Type': 'application/json' },
143
+ body: options?.body ? JSON.stringify(options.body) : undefined,
144
+ });
145
+ if (!res.ok)
146
+ throw new Error(`kbot API: ${res.status}`);
147
+ return res.json();
148
+ }
149
+ async function openclawSend(sessionId, message) {
150
+ await fetch(`${OPENCLAW_URL}/api/sessions/${sessionId}/send`, {
151
+ method: 'POST',
152
+ headers: { 'Content-Type': 'application/json' },
153
+ body: JSON.stringify({ message }),
154
+ });
155
+ }
156
+ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
157
+ const { name, arguments: args } = req.params;
158
+ const a = (args || {});
159
+ try {
160
+ switch (name) {
161
+ case 'kbot_reply': {
162
+ const text = String(a.text || '');
163
+ const chatId = String(a.chat_id || '');
164
+ const platform = String(a.platform || '');
165
+ // Try OpenClaw first, fall back to broadcast
166
+ try {
167
+ await openclawSend(chatId, text);
168
+ }
169
+ catch {
170
+ broadcast(`[${platform || 'reply'}] → ${chatId}: ${text}`);
171
+ }
172
+ return { content: [{ type: 'text', text: `Sent to ${chatId}${platform ? ` on ${platform}` : ''}` }] };
173
+ }
174
+ case 'kbot_agent': {
175
+ const result = await kbotApiFetch('/stream', {
176
+ method: 'POST',
177
+ body: { message: String(a.task), agent: String(a.agent || 'auto') },
178
+ });
179
+ return { content: [{ type: 'text', text: result.content || result.error || 'No response' }] };
180
+ }
181
+ case 'kbot_tools': {
182
+ if (a.action === 'list') {
183
+ const tools = await kbotApiFetch('/tools');
184
+ const filter = a.filter ? String(a.filter).toLowerCase() : '';
185
+ const filtered = filter
186
+ ? tools.filter(t => t.name.includes(filter) || t.description.toLowerCase().includes(filter))
187
+ : tools.slice(0, 30);
188
+ return { content: [{ type: 'text', text: filtered.map(t => `${t.name} — ${t.description}`).join('\n') }] };
189
+ }
190
+ if (a.action === 'execute' && a.tool_name) {
191
+ const result = await kbotApiFetch('/execute', {
192
+ method: 'POST',
193
+ body: { name: String(a.tool_name), args: a.args || {} },
194
+ });
195
+ return { content: [{ type: 'text', text: result.result || result.error || 'Done' }] };
196
+ }
197
+ return { content: [{ type: 'text', text: 'Use action="list" or action="execute" with tool_name' }] };
198
+ }
199
+ case 'kbot_status': {
200
+ const health = await kbotApiFetch('/health');
201
+ return { content: [{ type: 'text', text: JSON.stringify(health, null, 2) }] };
202
+ }
203
+ default:
204
+ throw new Error(`Unknown tool: ${name}`);
205
+ }
206
+ }
207
+ catch (err) {
208
+ return { content: [{ type: 'text', text: `Error: ${err instanceof Error ? err.message : String(err)}` }] };
209
+ }
210
+ });
211
+ // ── Permission relay ────────────────────────────────────────────────────────
212
+ const PermissionRequestSchema = z.object({
213
+ method: z.literal('notifications/claude/channel/permission_request'),
214
+ params: z.object({
215
+ request_id: z.string(),
216
+ tool_name: z.string(),
217
+ description: z.string(),
218
+ input_preview: z.string(),
219
+ }),
220
+ });
221
+ mcp.setNotificationHandler(PermissionRequestSchema, async ({ params }) => {
222
+ const prompt = `🔐 Claude wants to run ${params.tool_name}: ${params.description}\n\nReply "yes ${params.request_id}" or "no ${params.request_id}"`;
223
+ // Broadcast to SSE listeners
224
+ broadcast(prompt);
225
+ // Also try to send via OpenClaw to all active sessions
226
+ try {
227
+ await fetch(`${OPENCLAW_URL}/api/broadcast`, {
228
+ method: 'POST',
229
+ headers: { 'Content-Type': 'application/json' },
230
+ body: JSON.stringify({ message: prompt, platforms: [] }),
231
+ });
232
+ }
233
+ catch { /* OpenClaw might not be running — SSE is the fallback */ }
234
+ });
235
+ // ── Connect to Claude Code ──────────────────────────────────────────────────
236
+ await mcp.connect(new StdioServerTransport());
237
+ // ── HTTP server: receives events and forwards to Claude Code ────────────────
238
+ const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i;
239
+ let nextId = 1;
240
+ function parseBody(req) {
241
+ return new Promise((resolve, reject) => {
242
+ const chunks = [];
243
+ req.on('data', (c) => chunks.push(c));
244
+ req.on('end', () => resolve(Buffer.concat(chunks).toString()));
245
+ req.on('error', reject);
246
+ });
247
+ }
248
+ const httpServer = createServer(async (req, res) => {
249
+ const url = new URL(req.url || '/', `http://127.0.0.1:${KBOT_PORT}`);
250
+ // GET /events — SSE stream for monitoring
251
+ if (req.method === 'GET' && url.pathname === '/events') {
252
+ res.writeHead(200, {
253
+ 'Content-Type': 'text/event-stream',
254
+ 'Cache-Control': 'no-cache',
255
+ Connection: 'keep-alive',
256
+ });
257
+ res.write(': connected\n\n');
258
+ const emit = (chunk) => res.write(chunk);
259
+ listeners.add(emit);
260
+ req.on('close', () => listeners.delete(emit));
261
+ return;
262
+ }
263
+ // GET /health — channel health check
264
+ if (req.method === 'GET' && url.pathname === '/health') {
265
+ res.writeHead(200, { 'Content-Type': 'application/json' });
266
+ res.end(JSON.stringify({ status: 'ok', name: 'kbot-channel', version: '3.34.2', port: KBOT_PORT }));
267
+ return;
268
+ }
269
+ // POST — inbound messages
270
+ if (req.method === 'POST') {
271
+ const body = await parseBody(req);
272
+ const sender = req.headers['x-sender'] || 'local';
273
+ const platform = req.headers['x-platform'] || 'http';
274
+ // Gate on sender
275
+ if (!allowed.has(sender) && !allowed.has('local')) {
276
+ res.writeHead(403);
277
+ res.end('forbidden');
278
+ return;
279
+ }
280
+ // Check for permission verdict
281
+ const m = PERMISSION_REPLY_RE.exec(body);
282
+ if (m) {
283
+ await mcp.notification({
284
+ method: 'notifications/claude/channel/permission',
285
+ params: {
286
+ request_id: m[2].toLowerCase(),
287
+ behavior: m[1].toLowerCase().startsWith('y') ? 'allow' : 'deny',
288
+ },
289
+ });
290
+ res.writeHead(200);
291
+ res.end('verdict recorded');
292
+ return;
293
+ }
294
+ // Forward as channel event
295
+ const chatId = String(nextId++);
296
+ await mcp.notification({
297
+ method: 'notifications/claude/channel',
298
+ params: {
299
+ content: body,
300
+ meta: {
301
+ chat_id: chatId,
302
+ platform,
303
+ sender,
304
+ path: url.pathname,
305
+ },
306
+ },
307
+ });
308
+ res.writeHead(200);
309
+ res.end('ok');
310
+ return;
311
+ }
312
+ res.writeHead(404);
313
+ res.end('not found');
314
+ });
315
+ httpServer.listen(KBOT_PORT, '127.0.0.1', () => {
316
+ // Channel is live — Claude Code has already connected via stdio
317
+ // HTTP server accepts webhook POSTs and OpenClaw forwarded messages
318
+ });
319
+ //# sourceMappingURL=kbot-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbot-channel.js","sourceRoot":"","sources":["../../src/channels/kbot-channel.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.1",
3
+ "version": "3.35.0",
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": {