@kernel.chat/kbot 3.3.2 → 3.4.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/agent.d.ts.map +1 -1
- package/dist/agent.js +32 -3
- package/dist/agent.js.map +1 -1
- package/dist/auth.d.ts +8 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +37 -0
- package/dist/auth.js.map +1 -1
- package/dist/autopoiesis.d.ts +30 -1
- package/dist/autopoiesis.d.ts.map +1 -1
- package/dist/autopoiesis.js +115 -5
- package/dist/autopoiesis.js.map +1 -1
- package/dist/cli.js +90 -0
- package/dist/cli.js.map +1 -1
- package/dist/planner.d.ts +2 -0
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +55 -2
- package/dist/planner.js.map +1 -1
- package/dist/tool-pipeline.d.ts +22 -1
- package/dist/tool-pipeline.d.ts.map +1 -1
- package/dist/tool-pipeline.js +62 -1
- package/dist/tool-pipeline.js.map +1 -1
- package/dist/tools/forge.d.ts +8 -0
- package/dist/tools/forge.d.ts.map +1 -0
- package/dist/tools/forge.js +207 -0
- package/dist/tools/forge.js.map +1 -0
- package/dist/tools/forge.test.d.ts +2 -0
- package/dist/tools/forge.test.d.ts.map +1 -0
- package/dist/tools/forge.test.js +250 -0
- package/dist/tools/forge.test.js.map +1 -0
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +11 -2
- package/dist/tools/index.js.map +1 -1
- package/package.json +2 -2
package/dist/autopoiesis.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// kbot Autopoiesis — Self-Maintaining System
|
|
1
|
+
// kbot Autopoiesis — Self-Maintaining, Self-Creating System
|
|
2
2
|
//
|
|
3
3
|
// Based on Maturana & Varela's Autopoiesis theory (1972):
|
|
4
4
|
// Living systems are "self-making" — they continuously produce and
|
|
@@ -9,6 +9,14 @@
|
|
|
9
9
|
// self-heals broken components, and maintains its operational boundary.
|
|
10
10
|
// kbot doesn't just run — it actively maintains its ability to run.
|
|
11
11
|
//
|
|
12
|
+
// LIMITLESS EXECUTION INTEGRATION (v3.4.0):
|
|
13
|
+
// Self-healing now uses the full Limitless Execution stack:
|
|
14
|
+
// - Self-Extension: forge replacement tools when components fail
|
|
15
|
+
// - Tool Discovery: search MCP servers for missing capabilities
|
|
16
|
+
// - Fallback Chains: integrated with tool-pipeline DEFAULT_FALLBACK_RULES
|
|
17
|
+
// - Cost Regulation: adjust model routing based on system health
|
|
18
|
+
// - Specialist Routing: escalate to the right agent for complex repairs
|
|
19
|
+
//
|
|
12
20
|
// References:
|
|
13
21
|
// - Maturana, H.R. & Varela, F.J. (1980). Autopoiesis and Cognition.
|
|
14
22
|
// - Varela, F.J. (1979). Principles of Biological Autonomy.
|
|
@@ -82,13 +90,16 @@ export class AutopoieticSystem {
|
|
|
82
90
|
}
|
|
83
91
|
/**
|
|
84
92
|
* Attempt self-healing for a degraded or failed component.
|
|
85
|
-
*
|
|
93
|
+
* Uses the full Limitless Execution stack:
|
|
94
|
+
* 1. Static fallback (existing component)
|
|
95
|
+
* 2. Tool discovery (search for MCP replacement)
|
|
96
|
+
* 3. Self-extension (forge a replacement tool)
|
|
86
97
|
*/
|
|
87
98
|
selfHeal(componentId) {
|
|
88
99
|
const comp = this.components.get(componentId);
|
|
89
100
|
if (!comp || comp.status === 'healthy')
|
|
90
101
|
return null;
|
|
91
|
-
//
|
|
102
|
+
// Level 1: Static fallback — activate a known alternative
|
|
92
103
|
if (comp.compensable && comp.fallback) {
|
|
93
104
|
const fallback = this.components.get(comp.fallback);
|
|
94
105
|
if (fallback && fallback.status !== 'failed') {
|
|
@@ -103,9 +114,27 @@ export class AutopoieticSystem {
|
|
|
103
114
|
return response;
|
|
104
115
|
}
|
|
105
116
|
}
|
|
106
|
-
//
|
|
117
|
+
// Level 2: Tool discovery — flag for MCP search
|
|
118
|
+
// (Actual MCP search is async; we record the intent for the agent loop to act on)
|
|
119
|
+
if (comp.type === 'tool' || comp.type === 'connection') {
|
|
120
|
+
this.pendingDiscoveries.push({
|
|
121
|
+
componentId,
|
|
122
|
+
capability: comp.name,
|
|
123
|
+
reason: `${comp.name} failed ${comp.failureCount} times, no static fallback available`,
|
|
124
|
+
});
|
|
125
|
+
const response = {
|
|
126
|
+
action: `Queued MCP discovery for: ${comp.name} (no static fallback)`,
|
|
127
|
+
component: componentId,
|
|
128
|
+
success: true,
|
|
129
|
+
newStatus: 'degraded',
|
|
130
|
+
};
|
|
131
|
+
comp.status = 'degraded';
|
|
132
|
+
this.healingLog.push(response);
|
|
133
|
+
return response;
|
|
134
|
+
}
|
|
135
|
+
// Level 3: Record inability — will be surfaced to agent for forge_tool consideration
|
|
107
136
|
const response = {
|
|
108
|
-
action: `Cannot self-heal: ${comp.name}
|
|
137
|
+
action: `Cannot self-heal: ${comp.name} — escalate to agent for forge_tool`,
|
|
109
138
|
component: componentId,
|
|
110
139
|
success: false,
|
|
111
140
|
newStatus: comp.status,
|
|
@@ -113,6 +142,87 @@ export class AutopoieticSystem {
|
|
|
113
142
|
this.healingLog.push(response);
|
|
114
143
|
return response;
|
|
115
144
|
}
|
|
145
|
+
// ── Limitless Execution: Self-Extension ──
|
|
146
|
+
/** Pending tool discoveries (consumed by the agent loop) */
|
|
147
|
+
pendingDiscoveries = [];
|
|
148
|
+
/** Consume pending discovery requests (called by agent loop) */
|
|
149
|
+
consumeDiscoveries() {
|
|
150
|
+
const discoveries = [...this.pendingDiscoveries];
|
|
151
|
+
this.pendingDiscoveries = [];
|
|
152
|
+
return discoveries;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Register a forged tool as a new component.
|
|
156
|
+
* Called after forge_tool successfully creates a runtime tool.
|
|
157
|
+
* This is autopoiesis: the system creates a new part of itself.
|
|
158
|
+
*/
|
|
159
|
+
registerForgedComponent(toolName, description) {
|
|
160
|
+
this.registerComponent({
|
|
161
|
+
id: `forged:${toolName}`,
|
|
162
|
+
name: `Forged: ${description}`,
|
|
163
|
+
type: 'tool',
|
|
164
|
+
criticality: 0.3, // forged tools start at low criticality
|
|
165
|
+
compensable: true, // can be re-forged if lost
|
|
166
|
+
});
|
|
167
|
+
this.reportHealth(`forged:${toolName}`, true);
|
|
168
|
+
this.healingLog.push({
|
|
169
|
+
action: `Self-extended: forged new tool "${toolName}" — ${description}`,
|
|
170
|
+
component: `forged:${toolName}`,
|
|
171
|
+
success: true,
|
|
172
|
+
newStatus: 'healthy',
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
// ── Limitless Execution: Cost Regulation ──
|
|
176
|
+
/**
|
|
177
|
+
* Recommend model speed based on system health.
|
|
178
|
+
* When the system is degraded, conserve resources by using fast/cheap models.
|
|
179
|
+
* When healthy, use the default (more capable) model.
|
|
180
|
+
*/
|
|
181
|
+
recommendModelSpeed() {
|
|
182
|
+
const viability = this.computeViability();
|
|
183
|
+
// Below 60% viability: conserve resources, use fast model
|
|
184
|
+
if (viability < 0.6)
|
|
185
|
+
return 'fast';
|
|
186
|
+
// Count failed providers — if most are down, conserve what's left
|
|
187
|
+
const providers = [...this.components.values()].filter(c => c.type === 'provider');
|
|
188
|
+
const failedProviders = providers.filter(c => c.status === 'failed').length;
|
|
189
|
+
if (failedProviders >= providers.length - 1)
|
|
190
|
+
return 'fast';
|
|
191
|
+
return 'default';
|
|
192
|
+
}
|
|
193
|
+
// ── Limitless Execution: Structural Coupling ──
|
|
194
|
+
/**
|
|
195
|
+
* Process tool result and update component health.
|
|
196
|
+
* This is the structural coupling point — the system observes its own
|
|
197
|
+
* operations and updates its self-model accordingly.
|
|
198
|
+
*/
|
|
199
|
+
observeToolResult(toolName, success, errorMessage) {
|
|
200
|
+
// Map tool names to component IDs
|
|
201
|
+
const toolToComponent = {
|
|
202
|
+
read_file: 'filesystem', write_file: 'filesystem', edit_file: 'filesystem',
|
|
203
|
+
glob: 'filesystem', grep: 'filesystem', list_directory: 'filesystem',
|
|
204
|
+
bash: 'bash',
|
|
205
|
+
git_status: 'git', git_diff: 'git', git_commit: 'git', git_log: 'git',
|
|
206
|
+
web_search: 'internet', url_fetch: 'internet',
|
|
207
|
+
mcp_search: 'mcp-servers', mcp_connect: 'mcp-servers', mcp_call: 'mcp-servers',
|
|
208
|
+
};
|
|
209
|
+
const componentId = toolToComponent[toolName];
|
|
210
|
+
if (componentId) {
|
|
211
|
+
this.reportHealth(componentId, success);
|
|
212
|
+
}
|
|
213
|
+
// Check if a forged tool is reporting
|
|
214
|
+
const forgedId = `forged:${toolName}`;
|
|
215
|
+
if (this.components.has(forgedId)) {
|
|
216
|
+
this.reportHealth(forgedId, success);
|
|
217
|
+
}
|
|
218
|
+
// If a tool failed, check if the system needs intervention
|
|
219
|
+
if (!success && componentId) {
|
|
220
|
+
const comp = this.components.get(componentId);
|
|
221
|
+
if (comp && comp.status === 'failed') {
|
|
222
|
+
this.selfHeal(componentId);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
116
226
|
/**
|
|
117
227
|
* Compute overall system viability.
|
|
118
228
|
* Weighted average of component health, weighted by criticality.
|
package/dist/autopoiesis.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autopoiesis.js","sourceRoot":"","sources":["../src/autopoiesis.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"autopoiesis.js","sourceRoot":"","sources":["../src/autopoiesis.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -366,6 +366,96 @@ async function main() {
|
|
|
366
366
|
const report = await runDoctor();
|
|
367
367
|
process.stderr.write(formatDoctorReport(report));
|
|
368
368
|
});
|
|
369
|
+
program
|
|
370
|
+
.command('vitals')
|
|
371
|
+
.description('Autopoietic health check — system viability, component status, self-healing log')
|
|
372
|
+
.action(async () => {
|
|
373
|
+
const { AutopoieticSystem } = await import('./autopoiesis.js');
|
|
374
|
+
const chalk = (await import('chalk')).default;
|
|
375
|
+
const AMETHYST = chalk.hex('#6B5B95');
|
|
376
|
+
process.stderr.write('\n');
|
|
377
|
+
printInfo('kbot Vitals — Autopoietic System Health');
|
|
378
|
+
const system = new AutopoieticSystem();
|
|
379
|
+
// Probe live components
|
|
380
|
+
const { isOllamaRunning, isByokEnabled, getByokProvider } = await import('./auth.js');
|
|
381
|
+
const { existsSync } = await import('node:fs');
|
|
382
|
+
const { join } = await import('node:path');
|
|
383
|
+
const { homedir } = await import('node:os');
|
|
384
|
+
// Filesystem
|
|
385
|
+
system.reportHealth('filesystem', true);
|
|
386
|
+
// Bash
|
|
387
|
+
try {
|
|
388
|
+
const { execSync } = await import('node:child_process');
|
|
389
|
+
execSync('echo ok', { timeout: 2000 });
|
|
390
|
+
system.reportHealth('bash', true);
|
|
391
|
+
}
|
|
392
|
+
catch {
|
|
393
|
+
system.reportHealth('bash', false);
|
|
394
|
+
}
|
|
395
|
+
// Git
|
|
396
|
+
try {
|
|
397
|
+
const { execSync } = await import('node:child_process');
|
|
398
|
+
execSync('git --version', { timeout: 2000 });
|
|
399
|
+
system.reportHealth('git', true);
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
system.reportHealth('git', false);
|
|
403
|
+
}
|
|
404
|
+
// Memory
|
|
405
|
+
const memDir = join(homedir(), '.kbot', 'memory');
|
|
406
|
+
system.reportHealth('local-memory', existsSync(memDir));
|
|
407
|
+
system.reportHealth('session-context', true);
|
|
408
|
+
// Providers
|
|
409
|
+
if (isByokEnabled()) {
|
|
410
|
+
const provider = getByokProvider();
|
|
411
|
+
system.reportHealth(provider, true);
|
|
412
|
+
}
|
|
413
|
+
// Ollama
|
|
414
|
+
const ollamaOk = await isOllamaRunning();
|
|
415
|
+
system.reportHealth('ollama', ollamaOk);
|
|
416
|
+
// Internet
|
|
417
|
+
try {
|
|
418
|
+
const res = await fetch('https://httpbin.org/status/200', { signal: AbortSignal.timeout(3000) });
|
|
419
|
+
system.reportHealth('internet', res.ok);
|
|
420
|
+
}
|
|
421
|
+
catch {
|
|
422
|
+
system.reportHealth('internet', false);
|
|
423
|
+
}
|
|
424
|
+
// Forged tools
|
|
425
|
+
const forgedDir = join(homedir(), '.kbot', 'plugins', 'forged');
|
|
426
|
+
if (existsSync(forgedDir)) {
|
|
427
|
+
const { readdirSync } = await import('node:fs');
|
|
428
|
+
const forged = readdirSync(forgedDir).filter(f => f.endsWith('.js'));
|
|
429
|
+
for (const f of forged) {
|
|
430
|
+
const name = f.replace('.js', '');
|
|
431
|
+
system.registerForgedComponent(name, `User-forged tool`);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
// Run health check
|
|
435
|
+
const report = system.healthCheck();
|
|
436
|
+
// Display
|
|
437
|
+
const viabilityColor = report.viability > 0.7 ? chalk.green : report.viability > 0.4 ? chalk.yellow : chalk.red;
|
|
438
|
+
process.stderr.write(`\n ${AMETHYST('Viability')}: ${viabilityColor(`${(report.viability * 100).toFixed(0)}%`)}`);
|
|
439
|
+
process.stderr.write(` ${report.isViable ? chalk.green('VIABLE') : chalk.red('DEGRADED')}`);
|
|
440
|
+
process.stderr.write(` ${report.boundaryIntact ? chalk.green('boundary intact') : chalk.red('boundary breached')}\n\n`);
|
|
441
|
+
if (report.healthy.length > 0) {
|
|
442
|
+
process.stderr.write(` ${chalk.green('Healthy')}: ${report.healthy.join(', ')}\n`);
|
|
443
|
+
}
|
|
444
|
+
if (report.degraded.length > 0) {
|
|
445
|
+
process.stderr.write(` ${chalk.yellow('Degraded')}: ${report.degraded.join(', ')}\n`);
|
|
446
|
+
}
|
|
447
|
+
if (report.failed.length > 0) {
|
|
448
|
+
process.stderr.write(` ${chalk.red('Failed')}: ${report.failed.join(', ')}\n`);
|
|
449
|
+
}
|
|
450
|
+
if (report.healingActions.length > 0) {
|
|
451
|
+
process.stderr.write(`\n ${AMETHYST('Self-Healing')}:\n`);
|
|
452
|
+
for (const action of report.healingActions) {
|
|
453
|
+
process.stderr.write(` ${chalk.dim('→')} ${action}\n`);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
const speed = system.recommendModelSpeed();
|
|
457
|
+
process.stderr.write(`\n ${AMETHYST('Cost regulation')}: ${speed === 'fast' ? chalk.yellow('conserving (fast model)') : chalk.green('normal (default model)')}\n\n`);
|
|
458
|
+
});
|
|
369
459
|
program
|
|
370
460
|
.command('bootstrap')
|
|
371
461
|
.description('Measure the gap between what your project IS and what the world SEES')
|