@kernel.chat/kbot 3.9.0 → 3.11.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.
Files changed (49) hide show
  1. package/dist/a2a-client.d.ts +162 -0
  2. package/dist/a2a-client.d.ts.map +1 -0
  3. package/dist/a2a-client.js +376 -0
  4. package/dist/a2a-client.js.map +1 -0
  5. package/dist/agent.d.ts.map +1 -1
  6. package/dist/agent.js +96 -5
  7. package/dist/agent.js.map +1 -1
  8. package/dist/cli.js +295 -3
  9. package/dist/cli.js.map +1 -1
  10. package/dist/mcp-apps.d.ts +90 -0
  11. package/dist/mcp-apps.d.ts.map +1 -0
  12. package/dist/mcp-apps.js +497 -0
  13. package/dist/mcp-apps.js.map +1 -0
  14. package/dist/memory-synthesis.d.ts +67 -0
  15. package/dist/memory-synthesis.d.ts.map +1 -0
  16. package/dist/memory-synthesis.js +557 -0
  17. package/dist/memory-synthesis.js.map +1 -0
  18. package/dist/prompt-evolution.d.ts +92 -0
  19. package/dist/prompt-evolution.d.ts.map +1 -0
  20. package/dist/prompt-evolution.js +371 -0
  21. package/dist/prompt-evolution.js.map +1 -0
  22. package/dist/reflection.d.ts +33 -0
  23. package/dist/reflection.d.ts.map +1 -0
  24. package/dist/reflection.js +368 -0
  25. package/dist/reflection.js.map +1 -0
  26. package/dist/serve.d.ts.map +1 -1
  27. package/dist/serve.js +56 -6
  28. package/dist/serve.js.map +1 -1
  29. package/dist/skill-library.d.ts +60 -0
  30. package/dist/skill-library.d.ts.map +1 -0
  31. package/dist/skill-library.js +475 -0
  32. package/dist/skill-library.js.map +1 -0
  33. package/dist/spec.d.ts +23 -0
  34. package/dist/spec.d.ts.map +1 -0
  35. package/dist/spec.js +177 -0
  36. package/dist/spec.js.map +1 -0
  37. package/dist/tool-pipeline.d.ts +7 -0
  38. package/dist/tool-pipeline.d.ts.map +1 -1
  39. package/dist/tool-pipeline.js +32 -0
  40. package/dist/tool-pipeline.js.map +1 -1
  41. package/dist/tools/index.d.ts +1 -1
  42. package/dist/tools/index.d.ts.map +1 -1
  43. package/dist/tools/index.js +2 -1
  44. package/dist/tools/index.js.map +1 -1
  45. package/dist/tree-planner.d.ts +63 -0
  46. package/dist/tree-planner.d.ts.map +1 -0
  47. package/dist/tree-planner.js +818 -0
  48. package/dist/tree-planner.js.map +1 -0
  49. package/package.json +1 -1
@@ -0,0 +1,368 @@
1
+ // kbot Multi-Agent Reflexion (MAR) — When tasks fail, all specialists
2
+ // critique the failure from their perspective, and a judge synthesizes
3
+ // a single actionable lesson for future sessions.
4
+ //
5
+ // Triggers:
6
+ // 1. Self-eval scores below 0.5
7
+ // 2. Error-correction fires (classified error with confidence > 0.7)
8
+ // 3. User explicitly rejects the response ("no", "wrong", "that's not right")
9
+ //
10
+ // All critiques are heuristic-based — no LLM calls. Fast and free.
11
+ // Lessons are stored in ~/.kbot/memory/reflections.json (max 100, ranked by recency).
12
+ import { homedir } from 'node:os';
13
+ import { join } from 'node:path';
14
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
15
+ // ── Storage ──
16
+ const MEMORY_DIR = join(homedir(), '.kbot', 'memory');
17
+ const REFLECTIONS_FILE = join(MEMORY_DIR, 'reflections.json');
18
+ const MAX_REFLECTIONS = 100;
19
+ function ensureDir() {
20
+ if (!existsSync(MEMORY_DIR))
21
+ mkdirSync(MEMORY_DIR, { recursive: true });
22
+ }
23
+ function loadReflections() {
24
+ ensureDir();
25
+ if (!existsSync(REFLECTIONS_FILE))
26
+ return [];
27
+ try {
28
+ return JSON.parse(readFileSync(REFLECTIONS_FILE, 'utf-8'));
29
+ }
30
+ catch {
31
+ return [];
32
+ }
33
+ }
34
+ function saveReflections(reflections) {
35
+ ensureDir();
36
+ // Keep only the most recent MAX_REFLECTIONS
37
+ const trimmed = reflections.slice(-MAX_REFLECTIONS);
38
+ writeFileSync(REFLECTIONS_FILE, JSON.stringify(trimmed, null, 2));
39
+ }
40
+ // ── Heuristic Perspective Generators ──
41
+ // Each specialist evaluates the failure from its own lens — no LLM calls.
42
+ function coderPerspective(message, response) {
43
+ const critiques = [];
44
+ // Check if code was generated
45
+ const hasCodeBlock = /```[\s\S]*?```/.test(response);
46
+ const askedForCode = /\b(code|function|class|component|script|implement|write|create|build|fix|refactor)\b/i.test(message);
47
+ if (askedForCode && !hasCodeBlock) {
48
+ critiques.push('User asked for code but no code block was generated.');
49
+ }
50
+ if (hasCodeBlock) {
51
+ // Check for common syntax issues in generated code
52
+ const codeBlocks = response.match(/```(?:\w*)\n([\s\S]*?)```/g) || [];
53
+ for (const block of codeBlocks) {
54
+ const code = block.replace(/```\w*\n?/, '').replace(/```$/, '');
55
+ // Unmatched brackets
56
+ const opens = (code.match(/[{([\[]/g) || []).length;
57
+ const closes = (code.match(/[})\]]/g) || []).length;
58
+ if (Math.abs(opens - closes) > 2) {
59
+ critiques.push('Code has mismatched brackets/parentheses.');
60
+ }
61
+ // Missing imports in TypeScript/JavaScript
62
+ if (/\b(import|require)\b/.test(message) || /\bfrom\s+['"]/.test(code)) {
63
+ const usedTypes = code.match(/:\s*([A-Z]\w+)/g) || [];
64
+ const importedTypes = code.match(/import\s+.*?{([^}]+)}/g)?.flatMap(m => m.match(/{([^}]+)}/)?.[1]?.split(',').map(t => t.trim()) || []) || [];
65
+ const unimported = usedTypes.filter(t => {
66
+ const name = t.replace(/^:\s*/, '');
67
+ return !importedTypes.includes(name) && !code.includes(`type ${name}`) && !code.includes(`interface ${name}`);
68
+ });
69
+ if (unimported.length > 3) {
70
+ critiques.push('Code references types that may not be imported.');
71
+ }
72
+ }
73
+ }
74
+ // Check if tool sequence was efficient
75
+ const toolMentions = response.match(/\b(read_file|write_file|bash|grep|git_\w+)\b/g) || [];
76
+ if (toolMentions.length > 10) {
77
+ critiques.push('Excessive tool calls — could have been more efficient.');
78
+ }
79
+ }
80
+ // Empty or very short response for a complex question
81
+ if (message.length > 100 && response.length < 100) {
82
+ critiques.push('Response is suspiciously short for the complexity of the request.');
83
+ }
84
+ return critiques.length > 0
85
+ ? critiques.join(' ')
86
+ : 'No code-specific issues detected from the coder perspective.';
87
+ }
88
+ function guardianPerspective(message, response) {
89
+ const critiques = [];
90
+ // Check for risky operations in the response
91
+ const riskyPatterns = [
92
+ { pattern: /rm\s+-rf/i, issue: 'Suggested rm -rf without safeguards.' },
93
+ { pattern: /sudo\s+/i, issue: 'Suggested sudo without explaining risks.' },
94
+ { pattern: /chmod\s+777/i, issue: 'Suggested chmod 777 (world-writable).' },
95
+ { pattern: /DROP\s+TABLE|DELETE\s+FROM\s+\w+\s*;/i, issue: 'Destructive database operation without WHERE clause check.' },
96
+ { pattern: /eval\s*\(|new\s+Function\s*\(/i, issue: 'Used eval() or Function() constructor — potential code injection.' },
97
+ { pattern: /password\s*[:=]\s*['"][^'"]+['"]/i, issue: 'Hardcoded password or secret in response.' },
98
+ { pattern: /\bAPI[_-]?KEY\s*[:=]\s*['"][^'"]+['"]/i, issue: 'Hardcoded API key in response.' },
99
+ { pattern: /--force|--hard/i, issue: 'Suggested force/hard flag without warning about data loss.' },
100
+ ];
101
+ for (const { pattern, issue } of riskyPatterns) {
102
+ if (pattern.test(response)) {
103
+ critiques.push(issue);
104
+ }
105
+ }
106
+ // Check if the user asked about security and response lacks security considerations
107
+ if (/\b(security|secure|auth|encrypt|vulnerability|exploit|hack)\b/i.test(message)) {
108
+ if (!/\b(validate|sanitize|escape|encrypt|hash|token|csrf|xss|injection)\b/i.test(response)) {
109
+ critiques.push('User asked about security but response lacks security best practices.');
110
+ }
111
+ }
112
+ return critiques.length > 0
113
+ ? critiques.join(' ')
114
+ : 'No security concerns detected from the guardian perspective.';
115
+ }
116
+ function analystPerspective(message, response) {
117
+ const critiques = [];
118
+ // Did the response address the actual question?
119
+ const questionWords = message.toLowerCase().match(/\b(what|how|why|when|where|which|should|can|is|are|does|do)\b/g) || [];
120
+ const isQuestion = message.includes('?') || questionWords.length > 0;
121
+ if (isQuestion && response.length > 200) {
122
+ // Check if the response starts with relevant content vs preamble
123
+ const firstSentence = response.split(/[.!?\n]/)[0].toLowerCase();
124
+ const boilerplate = /^(certainly|of course|sure|great question|i'd be happy|absolutely|let me)/;
125
+ if (boilerplate.test(firstSentence)) {
126
+ critiques.push('Response starts with boilerplate instead of directly answering the question.');
127
+ }
128
+ }
129
+ // Multi-part questions: check if all parts were addressed
130
+ const parts = message.split(/[?;]/).filter(p => p.trim().length > 10);
131
+ if (parts.length >= 3 && response.length < parts.length * 50) {
132
+ critiques.push(`User asked ${parts.length} questions but response may not address all of them.`);
133
+ }
134
+ // Check for vague responses when specifics were asked
135
+ if (/\b(specific|exactly|precisely|concrete|example)\b/i.test(message)) {
136
+ const vagueTerms = response.match(/\b(generally|typically|usually|might|could|possibly|perhaps|maybe|it depends)\b/gi) || [];
137
+ if (vagueTerms.length > 3) {
138
+ critiques.push('User asked for specifics but response is vague and hedging.');
139
+ }
140
+ }
141
+ // Check if response contradicts the question premise
142
+ if (/\b(why did|why does|why is)\b/i.test(message) && /\b(actually.*doesn't|that's not|this isn't)\b/i.test(response)) {
143
+ critiques.push('Response may be contradicting the question premise without addressing the underlying need.');
144
+ }
145
+ return critiques.length > 0
146
+ ? critiques.join(' ')
147
+ : 'Response appears to address the question from the analyst perspective.';
148
+ }
149
+ function researcherPerspective(message, response) {
150
+ const critiques = [];
151
+ // Tasks that typically need external sources
152
+ const needsResearch = /\b(latest|current|recent|2024|2025|2026|version|release|update|best practice|comparison|benchmark|alternative)\b/i.test(message);
153
+ if (needsResearch) {
154
+ // Check if response mentions consulting sources
155
+ const citesSource = /\b(according to|source|documentation|docs|official|reference|based on|as of)\b/i.test(response);
156
+ const usedSearch = /\b(web_search|url_fetch|search)\b/i.test(response);
157
+ if (!citesSource && !usedSearch) {
158
+ critiques.push('Question likely requires current/external information but no sources were consulted or cited.');
159
+ }
160
+ }
161
+ // Check for potentially outdated information
162
+ if (/\b(deprecated|outdated|removed|legacy)\b/i.test(response)) {
163
+ critiques.push('Response mentions deprecated/outdated items — may need verification against current docs.');
164
+ }
165
+ // Technical questions about specific libraries/tools
166
+ const techMention = message.match(/\b(react|vue|angular|next|svelte|tailwind|prisma|docker|kubernetes|terraform|aws|gcp|azure)\s+(\d+\.?\d*)/i);
167
+ if (techMention) {
168
+ const lib = techMention[1];
169
+ if (!response.toLowerCase().includes(lib.toLowerCase())) {
170
+ critiques.push(`User asked about ${lib} but response may not address it directly.`);
171
+ }
172
+ }
173
+ return critiques.length > 0
174
+ ? critiques.join(' ')
175
+ : 'No research gaps detected from the researcher perspective.';
176
+ }
177
+ function writerPerspective(message, response) {
178
+ const critiques = [];
179
+ // Check structure
180
+ if (response.length > 500) {
181
+ const hasHeadings = /^#+\s/m.test(response);
182
+ const hasBullets = /^[-*]\s/m.test(response);
183
+ const hasNumbered = /^\d+\.\s/m.test(response);
184
+ if (!hasHeadings && !hasBullets && !hasNumbered) {
185
+ critiques.push('Long response lacks structure (no headings, bullets, or numbered lists).');
186
+ }
187
+ }
188
+ // Check for excessive length
189
+ const sentenceCount = response.split(/[.!?]+/).filter(s => s.trim().length > 5).length;
190
+ if (sentenceCount > 30 && message.length < 100) {
191
+ critiques.push('Response is excessively verbose relative to the question length.');
192
+ }
193
+ // Check for repetition
194
+ const sentences = response.split(/[.!?]+/).map(s => s.trim().toLowerCase()).filter(s => s.length > 20);
195
+ const uniqueSentences = new Set(sentences);
196
+ if (sentences.length > 5 && uniqueSentences.size < sentences.length * 0.7) {
197
+ critiques.push('Response contains significant repetition.');
198
+ }
199
+ // Check clarity — very long sentences
200
+ const longSentences = sentences.filter(s => s.split(/\s+/).length > 40);
201
+ if (longSentences.length > 3) {
202
+ critiques.push('Multiple overly long sentences hurt readability.');
203
+ }
204
+ // User asked for brevity
205
+ if (/\b(brief|short|concise|tl;?dr|summary|quick)\b/i.test(message) && response.length > 1000) {
206
+ critiques.push('User asked for brevity but response exceeds 1000 characters.');
207
+ }
208
+ return critiques.length > 0
209
+ ? critiques.join(' ')
210
+ : 'Response is well-structured from the writer perspective.';
211
+ }
212
+ // ── Core API ──
213
+ /**
214
+ * Generate reflections from 5 key specialist perspectives.
215
+ * All heuristic-based — no LLM calls.
216
+ */
217
+ export function generateReflections(message, response, failureType) {
218
+ const perspectives = [
219
+ { agent: 'coder', critique: coderPerspective(message, response) },
220
+ { agent: 'guardian', critique: guardianPerspective(message, response) },
221
+ { agent: 'analyst', critique: analystPerspective(message, response) },
222
+ { agent: 'researcher', critique: researcherPerspective(message, response) },
223
+ { agent: 'writer', critique: writerPerspective(message, response) },
224
+ ];
225
+ const synthesis = synthesize(perspectives);
226
+ const lesson = synthesis;
227
+ const reflection = {
228
+ id: `ref_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
229
+ taskMessage: message.slice(0, 500),
230
+ failureType,
231
+ perspectives,
232
+ synthesis,
233
+ lesson,
234
+ created: new Date().toISOString(),
235
+ };
236
+ // Persist
237
+ const reflections = loadReflections();
238
+ reflections.push(reflection);
239
+ saveReflections(reflections);
240
+ return reflection;
241
+ }
242
+ /**
243
+ * Synthesize multiple specialist perspectives into a single actionable lesson.
244
+ * Strategy: pick the highest-signal critique (the one with the most specific findings).
245
+ * If multiple agents found issues, combine them.
246
+ */
247
+ function synthesize(perspectives) {
248
+ // Filter out "no issues detected" responses — those are low signal
249
+ const noIssuePattern = /no .+ detected|no .+ concerns|appears to address|well-structured/i;
250
+ const critiques = perspectives.filter(p => !noIssuePattern.test(p.critique));
251
+ if (critiques.length === 0) {
252
+ return 'No specific issues identified by specialists. Failure may be due to subtle quality or user expectation mismatch.';
253
+ }
254
+ if (critiques.length === 1) {
255
+ return `[${critiques[0].agent}] ${critiques[0].critique}`;
256
+ }
257
+ // Multiple agents found issues — combine the top 2 by specificity (longer = more specific)
258
+ const sorted = critiques.sort((a, b) => b.critique.length - a.critique.length);
259
+ const top = sorted.slice(0, 2);
260
+ return top.map(c => `[${c.agent}] ${c.critique}`).join(' | ');
261
+ }
262
+ /**
263
+ * Retrieve past reflections relevant to a given message.
264
+ * Uses keyword overlap to find similar past failures.
265
+ */
266
+ export function getRelevantReflections(message, max = 3) {
267
+ const reflections = loadReflections();
268
+ if (reflections.length === 0)
269
+ return [];
270
+ const messageWords = extractWords(message);
271
+ if (messageWords.size === 0)
272
+ return reflections.slice(-max);
273
+ // Score each reflection by keyword overlap with the current message
274
+ const scored = reflections.map(r => {
275
+ const taskWords = extractWords(r.taskMessage);
276
+ let overlap = 0;
277
+ for (const word of messageWords) {
278
+ if (taskWords.has(word))
279
+ overlap++;
280
+ }
281
+ // Normalize by the smaller set size to get Jaccard-like similarity
282
+ const similarity = overlap / Math.min(messageWords.size, taskWords.size);
283
+ return { reflection: r, similarity };
284
+ });
285
+ // Sort by similarity (descending), then by recency
286
+ scored.sort((a, b) => {
287
+ if (Math.abs(a.similarity - b.similarity) > 0.1) {
288
+ return b.similarity - a.similarity;
289
+ }
290
+ return new Date(b.reflection.created).getTime() - new Date(a.reflection.created).getTime();
291
+ });
292
+ // Return top N with any overlap, or most recent if no overlap
293
+ const withOverlap = scored.filter(s => s.similarity > 0);
294
+ if (withOverlap.length > 0) {
295
+ return withOverlap.slice(0, max).map(s => s.reflection);
296
+ }
297
+ // Fallback: most recent reflections (still useful for general lessons)
298
+ return reflections.slice(-max);
299
+ }
300
+ /**
301
+ * Format reflections for injection into the system prompt.
302
+ * Returns an empty string if no reflections exist.
303
+ */
304
+ export function formatReflectionsForPrompt(reflections) {
305
+ if (reflections.length === 0)
306
+ return '';
307
+ const entries = reflections.map(r => {
308
+ const date = r.created.split('T')[0];
309
+ return `- [${date}] (${r.failureType}) ${r.lesson}`;
310
+ });
311
+ return `\n[Lessons from Past Failures]\n${entries.join('\n')}\nApply these lessons to avoid repeating past mistakes.\n`;
312
+ }
313
+ /**
314
+ * Detect if a user message indicates rejection of the previous response.
315
+ */
316
+ export function isUserRejection(message) {
317
+ const lower = message.toLowerCase().trim();
318
+ // Direct negation/rejection
319
+ const rejectionPatterns = [
320
+ /^no[,.]?\s/,
321
+ /^wrong/,
322
+ /^that's not right/,
323
+ /^that's wrong/,
324
+ /^that's incorrect/,
325
+ /^incorrect/,
326
+ /^nope/,
327
+ /^not what i/,
328
+ /^not correct/,
329
+ /^you're wrong/,
330
+ /^you got it wrong/,
331
+ /^that doesn't work/,
332
+ /^that didn't work/,
333
+ /^this doesn't work/,
334
+ /^this is wrong/,
335
+ /^this is incorrect/,
336
+ /^actually,?\s+(?:no|that's not|it should|the answer is)/,
337
+ /^try again/,
338
+ /^redo/,
339
+ /^fix this/,
340
+ /^that broke/,
341
+ /^it's broken/,
342
+ /^still broken/,
343
+ /^still wrong/,
344
+ /^still not working/,
345
+ ];
346
+ return rejectionPatterns.some(p => p.test(lower));
347
+ }
348
+ // ── Helpers ──
349
+ /** Extract meaningful words from a message for similarity matching */
350
+ function extractWords(text) {
351
+ const stopWords = new Set([
352
+ 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
353
+ 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
354
+ 'should', 'may', 'might', 'can', 'shall', 'to', 'of', 'in', 'for',
355
+ 'on', 'with', 'at', 'by', 'from', 'as', 'into', 'through', 'during',
356
+ 'before', 'after', 'above', 'below', 'between', 'under', 'again',
357
+ 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why',
358
+ 'how', 'all', 'each', 'every', 'both', 'few', 'more', 'most', 'other',
359
+ 'some', 'such', 'no', 'not', 'only', 'own', 'same', 'so', 'than',
360
+ 'too', 'very', 'just', 'because', 'but', 'and', 'or', 'if', 'while',
361
+ 'that', 'this', 'it', 'its', 'my', 'your', 'his', 'her', 'our',
362
+ 'their', 'i', 'you', 'he', 'she', 'we', 'they', 'me', 'him', 'us',
363
+ 'what', 'which', 'who', 'whom',
364
+ ]);
365
+ const words = text.toLowerCase().match(/\b[a-z][a-z0-9_.-]+\b/g) || [];
366
+ return new Set(words.filter(w => w.length > 2 && !stopWords.has(w)));
367
+ }
368
+ //# sourceMappingURL=reflection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflection.js","sourceRoot":"","sources":["../src/reflection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAyBA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAuBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmLrE"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AA2BA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAuBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuOrE"}
package/dist/serve.js CHANGED
@@ -15,9 +15,11 @@
15
15
  import { createServer } from 'node:http';
16
16
  import { createRequire } from 'node:module';
17
17
  import { registerAllTools, getAllTools, executeTool, getToolDefinitionsForApi, getToolMetrics } from './tools/index.js';
18
+ import { extractMcpAppFromText, renderMcpApp, listAppCapableTools } from './mcp-apps.js';
18
19
  import { printInfo, printSuccess } from './ui.js';
19
20
  import { ResponseStream } from './streaming.js';
20
21
  import { runAgent } from './agent.js';
22
+ import { mountA2ARoutes } from './a2a.js';
21
23
  const __require = createRequire(import.meta.url);
22
24
  const VERSION = __require('../package.json').version;
23
25
  function cors(res) {
@@ -121,6 +123,12 @@ export async function startServe(options) {
121
123
  res.end();
122
124
  return;
123
125
  }
126
+ // GET /apps — list MCP App-capable tools
127
+ if (path === '/apps' && req.method === 'GET') {
128
+ const appTools = listAppCapableTools();
129
+ json(res, 200, { tools: appTools, count: appTools.length });
130
+ return;
131
+ }
124
132
  // POST /execute — execute a tool
125
133
  if (path === '/execute' && req.method === 'POST') {
126
134
  const body = JSON.parse(await readBody(req));
@@ -134,6 +142,22 @@ export async function startServe(options) {
134
142
  name,
135
143
  arguments: args || {},
136
144
  });
145
+ // Check for MCP App content in the result
146
+ const appResult = !result.error ? extractMcpAppFromText(result.result) : null;
147
+ if (appResult) {
148
+ const rendered = await renderMcpApp(appResult, { renderMode: 'inline', maxHtmlSize: 1_048_576, sandbox: true });
149
+ json(res, 200, {
150
+ result: rendered.text,
151
+ html: rendered.rendered,
152
+ title: appResult.title,
153
+ width: appResult.width,
154
+ height: appResult.height,
155
+ mcp_app: true,
156
+ error: false,
157
+ duration_ms: result.duration_ms,
158
+ });
159
+ return;
160
+ }
137
161
  json(res, result.error ? 500 : 200, {
138
162
  result: result.result,
139
163
  error: result.error || false,
@@ -157,6 +181,22 @@ export async function startServe(options) {
157
181
  name: toolName,
158
182
  arguments: args,
159
183
  });
184
+ // Check for MCP App content in the result
185
+ const toolAppResult = !result.error ? extractMcpAppFromText(result.result) : null;
186
+ if (toolAppResult) {
187
+ const rendered = await renderMcpApp(toolAppResult, { renderMode: 'inline', maxHtmlSize: 1_048_576, sandbox: true });
188
+ json(res, 200, {
189
+ result: rendered.text,
190
+ html: rendered.rendered,
191
+ title: toolAppResult.title,
192
+ width: toolAppResult.width,
193
+ height: toolAppResult.height,
194
+ mcp_app: true,
195
+ error: false,
196
+ duration_ms: result.duration_ms,
197
+ });
198
+ return;
199
+ }
160
200
  json(res, result.error ? 500 : 200, {
161
201
  result: result.result,
162
202
  error: result.error || false,
@@ -171,14 +211,24 @@ export async function startServe(options) {
171
211
  json(res, 500, { error: err instanceof Error ? err.message : 'Internal error' });
172
212
  }
173
213
  });
214
+ // Mount A2A protocol routes (Agent Card + task endpoints)
215
+ mountA2ARoutes(server, {
216
+ port: options.port,
217
+ endpointUrl: `http://localhost:${options.port}`,
218
+ token: options.token,
219
+ });
174
220
  server.listen(options.port, () => {
175
221
  printSuccess(`kbot serve running on http://localhost:${options.port}`);
176
- printInfo(` GET /health — Health check`);
177
- printInfo(` GET /tools — List ${tools.length} tools`);
178
- printInfo(` POST /execute — Execute a tool`);
179
- printInfo(` POST /stream — SSE streaming agent`);
180
- printInfo(` POST /tools/:name — Execute by name`);
181
- printInfo(` GET /metrics — Execution metrics`);
222
+ printInfo(` GET /health — Health check`);
223
+ printInfo(` GET /tools — List ${tools.length} tools`);
224
+ printInfo(` POST /execute — Execute a tool`);
225
+ printInfo(` POST /stream — SSE streaming agent`);
226
+ printInfo(` POST /tools/:name — Execute by name`);
227
+ printInfo(` GET /metrics — Execution metrics`);
228
+ printInfo(` GET /apps — List MCP App-capable tools`);
229
+ printInfo(` GET /.well-known/agent.json — A2A Agent Card`);
230
+ printInfo(` POST /a2a/tasks — A2A submit task`);
231
+ printInfo(` GET /a2a/tasks/:id — A2A task status`);
182
232
  if (options.token) {
183
233
  printInfo(` Auth: Bearer token required`);
184
234
  }
package/dist/serve.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ export interface SkillStep {
2
+ tool: string;
3
+ argsTemplate: Record<string, unknown>;
4
+ }
5
+ export interface Skill {
6
+ id: string;
7
+ name: string;
8
+ description: string;
9
+ steps: SkillStep[];
10
+ /** Bag-of-words embedding for fast local matching (no API needed) */
11
+ embedding: number[];
12
+ successCount: number;
13
+ failureCount: number;
14
+ lastUsed: number;
15
+ created: number;
16
+ /** IDs of sub-skills this skill composes */
17
+ composedOf?: string[];
18
+ /** Original messages that produced this skill */
19
+ sourceMessages: string[];
20
+ /** Tags extracted from messages for keyword matching */
21
+ tags: string[];
22
+ }
23
+ export interface SkillLibrary {
24
+ version: number;
25
+ skills: Skill[];
26
+ vocabulary: string[];
27
+ }
28
+ /** Force-save immediately (call on exit) */
29
+ export declare function flushSkillLibrary(): void;
30
+ /**
31
+ * Distill a skill from a successful tool execution.
32
+ * Called after every successful agent response with 2+ tool calls.
33
+ */
34
+ export declare function distillSkill(message: string, toolSequence: Array<{
35
+ name: string;
36
+ args: Record<string, unknown>;
37
+ }>, success: boolean): Skill | null;
38
+ /**
39
+ * Retrieve relevant skills for a given task message.
40
+ * Uses embedding similarity (Ollama if available, else bag-of-words).
41
+ */
42
+ export declare function retrieveSkills(message: string, maxResults?: number): Promise<Skill[]>;
43
+ /**
44
+ * Format retrieved skills for injection into the system prompt.
45
+ */
46
+ export declare function formatSkillsForPrompt(skills: Skill[]): string;
47
+ /**
48
+ * Return the full skill library.
49
+ */
50
+ export declare function getSkillLibrary(): SkillLibrary;
51
+ /**
52
+ * Prune the skill library: remove low-success skills, keep top 500.
53
+ * Sorting priority: successCount desc, then lastUsed desc.
54
+ */
55
+ export declare function pruneSkillLibrary(): void;
56
+ /**
57
+ * Record a failure for a skill (called when a retrieved skill's tool chain fails).
58
+ */
59
+ export declare function recordSkillFailure(skillId: string): void;
60
+ //# sourceMappingURL=skill-library.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-library.d.ts","sourceRoot":"","sources":["../src/skill-library.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,qEAAqE;IACrE,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,iDAAiD;IACjD,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,wDAAwD;IACxD,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAuDD,4CAA4C;AAC5C,wBAAgB,iBAAiB,IAAI,IAAI,CASxC;AAwGD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,EACpE,OAAO,EAAE,OAAO,GACf,KAAK,GAAG,IAAI,CAiEd;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,KAAK,EAAE,CAAC,CA2ClB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAiB7D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CA8BxC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAOxD"}