@kernel.chat/kbot 2.10.1 → 2.12.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 (67) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-protocol.js +1 -1
  3. package/dist/agent-protocol.js.map +1 -1
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +11 -0
  6. package/dist/agent.js.map +1 -1
  7. package/dist/agents/agents.test.d.ts +2 -0
  8. package/dist/agents/agents.test.d.ts.map +1 -0
  9. package/dist/agents/agents.test.js +127 -0
  10. package/dist/agents/agents.test.js.map +1 -0
  11. package/dist/agents/creative.d.ts +27 -0
  12. package/dist/agents/creative.d.ts.map +1 -0
  13. package/dist/agents/creative.js +77 -0
  14. package/dist/agents/creative.js.map +1 -0
  15. package/dist/agents/developer.d.ts +27 -0
  16. package/dist/agents/developer.d.ts.map +1 -0
  17. package/dist/agents/developer.js +107 -0
  18. package/dist/agents/developer.js.map +1 -0
  19. package/dist/cli.js +70 -3
  20. package/dist/cli.js.map +1 -1
  21. package/dist/evolution.d.ts +112 -0
  22. package/dist/evolution.d.ts.map +1 -0
  23. package/dist/evolution.js +642 -0
  24. package/dist/evolution.js.map +1 -0
  25. package/dist/evolution.test.d.ts +2 -0
  26. package/dist/evolution.test.d.ts.map +1 -0
  27. package/dist/evolution.test.js +160 -0
  28. package/dist/evolution.test.js.map +1 -0
  29. package/dist/ide/acp-server.js +2 -2
  30. package/dist/ide/bridge.d.ts.map +1 -1
  31. package/dist/ide/bridge.js +2 -0
  32. package/dist/ide/bridge.js.map +1 -1
  33. package/dist/learned-router.d.ts.map +1 -1
  34. package/dist/learned-router.js +6 -0
  35. package/dist/learned-router.js.map +1 -1
  36. package/dist/matrix.d.ts.map +1 -1
  37. package/dist/matrix.js +22 -0
  38. package/dist/matrix.js.map +1 -1
  39. package/dist/quality-diversity.d.ts +106 -0
  40. package/dist/quality-diversity.d.ts.map +1 -0
  41. package/dist/quality-diversity.js +296 -0
  42. package/dist/quality-diversity.js.map +1 -0
  43. package/dist/tools/comfyui-plugin.d.ts +2 -0
  44. package/dist/tools/comfyui-plugin.d.ts.map +1 -0
  45. package/dist/tools/comfyui-plugin.js +523 -0
  46. package/dist/tools/comfyui-plugin.js.map +1 -0
  47. package/dist/tools/creative.d.ts +2 -0
  48. package/dist/tools/creative.d.ts.map +1 -0
  49. package/dist/tools/creative.js +803 -0
  50. package/dist/tools/creative.js.map +1 -0
  51. package/dist/tools/creative.test.d.ts +2 -0
  52. package/dist/tools/creative.test.d.ts.map +1 -0
  53. package/dist/tools/creative.test.js +281 -0
  54. package/dist/tools/creative.test.js.map +1 -0
  55. package/dist/tools/index.d.ts.map +1 -1
  56. package/dist/tools/index.js +7 -1
  57. package/dist/tools/index.js.map +1 -1
  58. package/dist/tools/magenta-plugin.d.ts +2 -0
  59. package/dist/tools/magenta-plugin.d.ts.map +1 -0
  60. package/dist/tools/magenta-plugin.js +405 -0
  61. package/dist/tools/magenta-plugin.js.map +1 -0
  62. package/dist/tools/subagent.js +1 -1
  63. package/dist/tools/subagent.js.map +1 -1
  64. package/dist/ui.d.ts.map +1 -1
  65. package/dist/ui.js +4 -2
  66. package/dist/ui.js.map +1 -1
  67. package/package.json +2 -2
@@ -0,0 +1,296 @@
1
+ // K:BOT MAP-Elites Quality-Diversity Engine
2
+ //
3
+ // Implements the MAP-Elites algorithm adapted for an AI agent's learning engine.
4
+ // Maintains an archive of high-quality solutions indexed by behavioral descriptors,
5
+ // enabling exploration of diverse solution strategies.
6
+ //
7
+ // Grid dimensions:
8
+ // X: taskComplexity (0-4: trivial / simple / moderate / complex / expert)
9
+ // Y: responseStyle (0-3: concise / standard / detailed / comprehensive)
10
+ // Total cells: 5 x 4 = 20
11
+ //
12
+ // Each cell holds the single highest-fitness solution found for that behavioral region.
13
+ // Solutions are placed or replaced only when a higher-fitness candidate arrives.
14
+ //
15
+ // Persists to ~/.kbot/memory/map-elites.json using debounced writes.
16
+ import { homedir } from 'node:os';
17
+ import { join } from 'node:path';
18
+ import { existsSync, readFileSync, writeFile, mkdirSync } from 'node:fs';
19
+ const LEARN_DIR = join(homedir(), '.kbot', 'memory');
20
+ const ARCHIVE_FILE = join(LEARN_DIR, 'map-elites.json');
21
+ // ═══ GRID CONSTANTS ══════════════════════════════════════════════
22
+ const COMPLEXITY_BINS = 5; // 0..4
23
+ const STYLE_BINS = 4; // 0..3
24
+ const TOTAL_CELLS = COMPLEXITY_BINS * STYLE_BINS;
25
+ // ═══ PERSISTENCE ═════════════════════════════════════════════════
26
+ function ensureDir() {
27
+ if (!existsSync(LEARN_DIR))
28
+ mkdirSync(LEARN_DIR, { recursive: true });
29
+ }
30
+ function loadJSON(path, fallback) {
31
+ ensureDir();
32
+ if (!existsSync(path))
33
+ return fallback;
34
+ try {
35
+ return JSON.parse(readFileSync(path, 'utf-8'));
36
+ }
37
+ catch {
38
+ return fallback;
39
+ }
40
+ }
41
+ /** Debounced async file writer — batches rapid writes into one I/O */
42
+ let pendingTimer = null;
43
+ const WRITE_DEBOUNCE_MS = 500;
44
+ function saveArchive() {
45
+ ensureDir();
46
+ if (pendingTimer)
47
+ clearTimeout(pendingTimer);
48
+ pendingTimer = setTimeout(() => {
49
+ pendingTimer = null;
50
+ writeFile(ARCHIVE_FILE, JSON.stringify(archive, null, 2), () => {
51
+ // non-critical — archive data can be regenerated from future interactions
52
+ });
53
+ }, WRITE_DEBOUNCE_MS);
54
+ }
55
+ function emptyGrid() {
56
+ const grid = [];
57
+ for (let c = 0; c < COMPLEXITY_BINS; c++) {
58
+ grid[c] = [];
59
+ for (let s = 0; s < STYLE_BINS; s++) {
60
+ grid[c][s] = null;
61
+ }
62
+ }
63
+ return grid;
64
+ }
65
+ let archive = emptyGrid();
66
+ // ═══ PUBLIC API ══════════════════════════════════════════════════
67
+ /**
68
+ * Load the archive from disk. Creates an empty grid if the file is missing or corrupt.
69
+ * Call once at startup.
70
+ */
71
+ export function initArchive() {
72
+ const raw = loadJSON(ARCHIVE_FILE, null);
73
+ if (raw &&
74
+ Array.isArray(raw) &&
75
+ raw.length === COMPLEXITY_BINS &&
76
+ raw.every(row => Array.isArray(row) && row.length === STYLE_BINS)) {
77
+ archive = raw;
78
+ }
79
+ else {
80
+ archive = emptyGrid();
81
+ }
82
+ }
83
+ /**
84
+ * Classify a solution into grid coordinates [taskComplexity, responseStyle].
85
+ *
86
+ * taskComplexity: based on tool count
87
+ * 0 = no tools (trivial)
88
+ * 1 = 1 tool (simple)
89
+ * 2 = 2-3 tools (moderate)
90
+ * 3 = 4-6 tools (complex)
91
+ * 4 = 7+ tools (expert)
92
+ *
93
+ * responseStyle: based on token cost
94
+ * 0 = < 200 tokens (concise)
95
+ * 1 = < 500 tokens (standard)
96
+ * 2 = < 1500 tokens (detailed)
97
+ * 3 = 1500+ tokens (comprehensive)
98
+ */
99
+ export function computeDescriptors(_intent, toolSequence, tokensCost) {
100
+ // Task complexity from tool count
101
+ const toolCount = toolSequence.length;
102
+ let complexity;
103
+ if (toolCount === 0)
104
+ complexity = 0;
105
+ else if (toolCount === 1)
106
+ complexity = 1;
107
+ else if (toolCount <= 3)
108
+ complexity = 2;
109
+ else if (toolCount <= 6)
110
+ complexity = 3;
111
+ else
112
+ complexity = 4;
113
+ // Response style from token cost
114
+ let style;
115
+ if (tokensCost < 200)
116
+ style = 0;
117
+ else if (tokensCost < 500)
118
+ style = 1;
119
+ else if (tokensCost < 1500)
120
+ style = 2;
121
+ else
122
+ style = 3;
123
+ return [complexity, style];
124
+ }
125
+ /**
126
+ * Compute composite fitness for a solution.
127
+ *
128
+ * Weighted formula:
129
+ * 0.4 * quality (evalResult.overall)
130
+ * + 0.3 * reliability (successRate)
131
+ * + 0.3 * efficiency (penalize expensive solutions)
132
+ */
133
+ export function computeFitness(evalResult, successRate, tokensCost) {
134
+ const quality = Math.max(0, Math.min(1, evalResult.overall));
135
+ const reliability = Math.max(0, Math.min(1, successRate));
136
+ const efficiency = 1 - Math.min(tokensCost / 2000, 1);
137
+ return 0.4 * quality + 0.3 * reliability + 0.3 * efficiency;
138
+ }
139
+ /**
140
+ * Attempt to place a solution in the archive.
141
+ * Only replaces an existing cell if the new solution has higher fitness.
142
+ * Returns true if the solution was placed (new cell or fitness improvement).
143
+ */
144
+ export function addToArchive(solution) {
145
+ const [c, s] = solution.descriptors;
146
+ // Bounds check
147
+ if (c < 0 || c >= COMPLEXITY_BINS || s < 0 || s >= STYLE_BINS)
148
+ return false;
149
+ const current = archive[c][s];
150
+ if (!current || solution.fitness > current.fitness) {
151
+ archive[c][s] = solution;
152
+ saveArchive();
153
+ return true;
154
+ }
155
+ return false;
156
+ }
157
+ /**
158
+ * Get the elite solution for a specific grid cell.
159
+ * Returns null if the cell is empty.
160
+ */
161
+ export function getElite(taskComplexity, responseStyle) {
162
+ if (taskComplexity < 0 || taskComplexity >= COMPLEXITY_BINS ||
163
+ responseStyle < 0 || responseStyle >= STYLE_BINS) {
164
+ return null;
165
+ }
166
+ return archive[taskComplexity][responseStyle] ?? null;
167
+ }
168
+ /**
169
+ * Suggest the best strategy for a new task.
170
+ * Computes descriptors from the task parameters and returns the elite in that cell.
171
+ */
172
+ export function suggestStrategy(intent, toolSequence) {
173
+ // Estimate token cost from tool sequence length (heuristic: ~200 tokens per tool call)
174
+ const estimatedTokens = Math.max(100, toolSequence.length * 200);
175
+ const [c, s] = computeDescriptors(intent, toolSequence, estimatedTokens);
176
+ return getElite(c, s);
177
+ }
178
+ /**
179
+ * Get archive statistics: how many cells are filled, average fitness, coverage, and top elites.
180
+ */
181
+ export function getArchiveStats() {
182
+ const elites = [];
183
+ for (let c = 0; c < COMPLEXITY_BINS; c++) {
184
+ for (let s = 0; s < STYLE_BINS; s++) {
185
+ const cell = archive[c][s];
186
+ if (cell)
187
+ elites.push(cell);
188
+ }
189
+ }
190
+ const totalElites = elites.length;
191
+ const avgFitness = totalElites > 0
192
+ ? elites.reduce((sum, e) => sum + e.fitness, 0) / totalElites
193
+ : 0;
194
+ const coverage = totalElites / TOTAL_CELLS;
195
+ const topElites = [...elites]
196
+ .sort((a, b) => b.fitness - a.fitness)
197
+ .slice(0, 5);
198
+ return { totalElites, avgFitness, coverage, topElites };
199
+ }
200
+ /**
201
+ * ASCII visualization of the archive grid.
202
+ * Filled cells show a fitness indicator, empty cells show a dot.
203
+ *
204
+ * Example output:
205
+ * MAP-Elites Archive (5x4)
206
+ * concise standard detailed comprehensive
207
+ * trivial . ██(0.82) . .
208
+ * simple ██(0.71) . ██(0.90) .
209
+ * moderate . ██(0.65) . ██(0.78)
210
+ * complex . . . .
211
+ * expert . . . ██(0.95)
212
+ */
213
+ export function getArchiveCoverage() {
214
+ const complexityLabels = ['trivial ', 'simple ', 'moderate ', 'complex ', 'expert '];
215
+ const styleLabels = ['concise', 'standard', 'detailed', 'comprehensive'];
216
+ const lines = [];
217
+ lines.push('MAP-Elites Archive (5x4)');
218
+ lines.push(` ${styleLabels.map(l => l.padEnd(14)).join('')}`);
219
+ for (let c = 0; c < COMPLEXITY_BINS; c++) {
220
+ const cells = [];
221
+ for (let s = 0; s < STYLE_BINS; s++) {
222
+ const cell = archive[c][s];
223
+ if (cell) {
224
+ cells.push(`██(${cell.fitness.toFixed(2)})`.padEnd(14));
225
+ }
226
+ else {
227
+ cells.push('.'.padEnd(14));
228
+ }
229
+ }
230
+ lines.push(` ${complexityLabels[c]} ${cells.join('')}`);
231
+ }
232
+ const stats = getArchiveStats();
233
+ lines.push('');
234
+ lines.push(`Coverage: ${stats.totalElites}/${TOTAL_CELLS} cells (${(stats.coverage * 100).toFixed(0)}%)`);
235
+ if (stats.totalElites > 0) {
236
+ lines.push(`Avg fitness: ${stats.avgFitness.toFixed(3)}`);
237
+ }
238
+ return lines.join('\n');
239
+ }
240
+ /**
241
+ * Remove elites older than maxAge milliseconds that have 0 uses.
242
+ * Frees up cells for new exploration.
243
+ */
244
+ export function pruneArchive(maxAge) {
245
+ const cutoff = Date.now() - maxAge;
246
+ let pruned = 0;
247
+ for (let c = 0; c < COMPLEXITY_BINS; c++) {
248
+ for (let s = 0; s < STYLE_BINS; s++) {
249
+ const cell = archive[c][s];
250
+ if (cell && cell.metadata.uses === 0) {
251
+ const created = new Date(cell.metadata.created).getTime();
252
+ if (created < cutoff) {
253
+ archive[c][s] = null;
254
+ pruned++;
255
+ }
256
+ }
257
+ }
258
+ }
259
+ if (pruned > 0)
260
+ saveArchive();
261
+ return pruned;
262
+ }
263
+ // ═══ INTEGRATION HOOK ════════════════════════════════════════════
264
+ /**
265
+ * Called after each agent interaction to potentially update the archive.
266
+ * Computes descriptors and fitness, then attempts to place the solution.
267
+ */
268
+ export function learnFromOutcome(intent, toolSequence, evalResult, successRate, tokensCost, retryCount) {
269
+ const descriptors = computeDescriptors(intent, toolSequence, tokensCost);
270
+ const fitness = computeFitness(evalResult, successRate, tokensCost);
271
+ // Extract keywords from intent (simple extraction — mirrors learning.ts approach)
272
+ const keywords = intent
273
+ .toLowerCase()
274
+ .replace(/[^a-z0-9\s]/g, ' ')
275
+ .split(/\s+/)
276
+ .filter(w => w.length > 2)
277
+ .slice(0, 10);
278
+ const solution = {
279
+ pattern: {
280
+ intent,
281
+ toolSequence,
282
+ keywords,
283
+ },
284
+ fitness,
285
+ descriptors,
286
+ metadata: {
287
+ tokensCost,
288
+ toolCallCount: toolSequence.length,
289
+ retryCount,
290
+ created: new Date().toISOString(),
291
+ uses: 0,
292
+ },
293
+ };
294
+ addToArchive(solution);
295
+ }
296
+ //# sourceMappingURL=quality-diversity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-diversity.js","sourceRoot":"","sources":["../src/quality-diversity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function registerComfyUITools(): void;
2
+ //# sourceMappingURL=comfyui-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comfyui-plugin.d.ts","sourceRoot":"","sources":["../../src/tools/comfyui-plugin.ts"],"names":[],"mappings":"AA+MA,wBAAgB,oBAAoB,IAAI,IAAI,CAuW3C"}