@kernel.chat/kbot 3.3.1 → 3.4.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.
- package/README.md +9 -10
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +30 -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/bootstrap.d.ts +24 -0
- package/dist/bootstrap.d.ts.map +1 -0
- package/dist/bootstrap.js +646 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/cli.js +38 -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/planner.js
CHANGED
|
@@ -15,6 +15,9 @@ import { executeTool, getTool } from './tools/index.js';
|
|
|
15
15
|
import { gatherContext, formatContextForPrompt } from './context.js';
|
|
16
16
|
import { createSpinner, printInfo, printSuccess, printError, printWarn } from './ui.js';
|
|
17
17
|
import { TaskLedger } from './task-ledger.js';
|
|
18
|
+
import { learnedRoute } from './learned-router.js';
|
|
19
|
+
import { classifyTask } from './learning.js';
|
|
20
|
+
import { listAgents } from './matrix.js';
|
|
18
21
|
import chalk from 'chalk';
|
|
19
22
|
const AMETHYST = chalk.hex('#6B5B95');
|
|
20
23
|
// ── Plan Generation ──
|
|
@@ -29,6 +32,7 @@ Given the user's task and project context, produce a plan with this exact JSON s
|
|
|
29
32
|
"description": "Human-readable description of this step",
|
|
30
33
|
"tool": "tool_name",
|
|
31
34
|
"args": { "key": "value" },
|
|
35
|
+
"agent": "coder",
|
|
32
36
|
"reads": ["file1.ts"],
|
|
33
37
|
"writes": ["file2.ts"],
|
|
34
38
|
"dependsOn": []
|
|
@@ -39,14 +43,60 @@ Given the user's task and project context, produce a plan with this exact JSON s
|
|
|
39
43
|
|
|
40
44
|
Available tools: read_file, write_file, edit_file, multi_file_write, bash, glob, grep, git_status, git_diff, git_commit, git_push, web_search, research, url_fetch, parallel_execute, sandbox_run, build_run, notebook_edit
|
|
41
45
|
|
|
46
|
+
Available agents (assign the best agent for each step):
|
|
47
|
+
- kernel: general tasks, conversation
|
|
48
|
+
- coder: programming, code generation, debugging, refactoring
|
|
49
|
+
- researcher: research, fact-finding, documentation lookup
|
|
50
|
+
- writer: content creation, documentation, copy
|
|
51
|
+
- analyst: strategy, evaluation, comparison
|
|
52
|
+
- guardian: security review, vulnerability scanning
|
|
53
|
+
- infrastructure: DevOps, CI/CD, deployment
|
|
54
|
+
- quant: data analysis, quantitative tasks
|
|
55
|
+
- investigator: deep research, root cause analysis
|
|
56
|
+
|
|
42
57
|
Rules:
|
|
43
58
|
- Start with read_file/glob/grep steps to understand the codebase BEFORE making changes
|
|
44
59
|
- Group independent operations that can run in parallel
|
|
60
|
+
- Assign the most appropriate agent to each step based on the step's nature
|
|
45
61
|
- Always verify changes with a type-check or test step at the end
|
|
46
62
|
- For file edits, use edit_file with old_string/new_string (not full rewrites unless creating new files)
|
|
47
63
|
- Include error recovery — if a step might fail, note what to do
|
|
48
64
|
- Keep plans concise — 5-20 steps for most tasks
|
|
49
65
|
- Output ONLY valid JSON, no markdown wrapping`;
|
|
66
|
+
/**
|
|
67
|
+
* Route a plan step to the best specialist agent.
|
|
68
|
+
* Priority: LLM assignment (from plan) → learned router → task classification → fallback to coder.
|
|
69
|
+
*/
|
|
70
|
+
function routeStepToAgent(step) {
|
|
71
|
+
// 1. If the LLM explicitly assigned an agent in the plan, use it
|
|
72
|
+
if (step.agent) {
|
|
73
|
+
// Validate against known agents
|
|
74
|
+
const known = listAgents().map(a => a.id);
|
|
75
|
+
const builtIn = ['kernel', 'coder', 'researcher', 'writer', 'analyst', 'aesthete', 'guardian', 'curator', 'strategist', 'infrastructure', 'quant', 'investigator', 'oracle', 'chronist', 'sage', 'communicator', 'adapter'];
|
|
76
|
+
if (known.includes(step.agent) || builtIn.includes(step.agent)) {
|
|
77
|
+
return step.agent;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// 2. Try the learned router (based on historical routing patterns)
|
|
81
|
+
const learned = learnedRoute(step.description);
|
|
82
|
+
if (learned)
|
|
83
|
+
return learned.agent;
|
|
84
|
+
// 3. Fall back to task classification
|
|
85
|
+
const taskType = classifyTask(step.description);
|
|
86
|
+
const taskToAgent = {
|
|
87
|
+
debug: 'coder',
|
|
88
|
+
build: 'coder',
|
|
89
|
+
refactor: 'coder',
|
|
90
|
+
test: 'coder',
|
|
91
|
+
research: 'researcher',
|
|
92
|
+
search: 'researcher',
|
|
93
|
+
explain: 'writer',
|
|
94
|
+
deploy: 'infrastructure',
|
|
95
|
+
security: 'guardian',
|
|
96
|
+
analyze: 'analyst',
|
|
97
|
+
};
|
|
98
|
+
return taskToAgent[taskType] || 'coder';
|
|
99
|
+
}
|
|
50
100
|
/**
|
|
51
101
|
* Generate a plan for a complex task.
|
|
52
102
|
* Uses the AI to analyze the task and produce structured steps.
|
|
@@ -118,7 +168,8 @@ export function displayPlan(plan) {
|
|
|
118
168
|
? chalk.dim(` (after #${step.dependsOn.join(', #')})`)
|
|
119
169
|
: '';
|
|
120
170
|
const tool = step.tool ? chalk.cyan(` [${step.tool}]`) : '';
|
|
121
|
-
|
|
171
|
+
const agent = step.agent ? chalk.magenta(` @${step.agent}`) : '';
|
|
172
|
+
console.log(` ${chalk.dim(`${step.id}.`)} ${step.description}${tool}${agent}${deps}`);
|
|
122
173
|
if (step.writes && step.writes.length > 0) {
|
|
123
174
|
console.log(` ${chalk.dim('writes:')} ${step.writes.join(', ')}`);
|
|
124
175
|
}
|
|
@@ -193,7 +244,9 @@ export async function executePlan(plan, agentOpts, onStepComplete) {
|
|
|
193
244
|
step.error = result.result;
|
|
194
245
|
}
|
|
195
246
|
else {
|
|
196
|
-
|
|
247
|
+
// Route step to the best specialist agent
|
|
248
|
+
const stepAgent = routeStepToAgent(step);
|
|
249
|
+
const response = await runAgent(`You are executing step ${step.id} of a plan. The step is: "${step.description}"\n\nExecute this step now using your tools. Be precise and verify your work.`, { ...agentOpts, agent: stepAgent, skipPlanner: true });
|
|
197
250
|
step.result = response.content;
|
|
198
251
|
step.status = 'done';
|
|
199
252
|
}
|
package/dist/planner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-pipeline.d.ts
CHANGED
|
@@ -65,9 +65,29 @@ export declare function executionMiddleware(executeTool: (name: string, args: an
|
|
|
65
65
|
result: string;
|
|
66
66
|
error?: string;
|
|
67
67
|
}>): ToolMiddleware;
|
|
68
|
+
export interface FallbackRule {
|
|
69
|
+
/** Tool that triggers the fallback */
|
|
70
|
+
fromTool: string;
|
|
71
|
+
/** Tool to fall back to */
|
|
72
|
+
toTool: string;
|
|
73
|
+
/** Transform arguments from the original tool to the fallback tool */
|
|
74
|
+
transformArgs: (args: any) => any;
|
|
75
|
+
/** Condition under which the fallback should trigger (checks the error string) */
|
|
76
|
+
condition: (error: string) => boolean;
|
|
77
|
+
}
|
|
78
|
+
/** Default fallback rules for common tool failures */
|
|
79
|
+
export declare const DEFAULT_FALLBACK_RULES: FallbackRule[];
|
|
80
|
+
/**
|
|
81
|
+
* Fallback middleware — retries failed tool calls with alternative tools.
|
|
82
|
+
* Checks error messages against fallback rules and reroutes on match.
|
|
83
|
+
*/
|
|
84
|
+
export declare function fallbackMiddleware(rules: FallbackRule[], execute: (name: string, args: any) => Promise<{
|
|
85
|
+
result: string;
|
|
86
|
+
error?: string;
|
|
87
|
+
}>): ToolMiddleware;
|
|
68
88
|
/**
|
|
69
89
|
* Create the default pipeline with the standard middleware stack.
|
|
70
|
-
* Order: telemetry? → permission → hooks → metrics → timeout → truncation → execution
|
|
90
|
+
* Order: telemetry? → permission → hooks → metrics → timeout → truncation → fallback? → execution
|
|
71
91
|
*/
|
|
72
92
|
export declare function createDefaultPipeline(deps: {
|
|
73
93
|
checkPermission: (name: string, args: any) => Promise<boolean>;
|
|
@@ -82,5 +102,6 @@ export declare function createDefaultPipeline(deps: {
|
|
|
82
102
|
}>;
|
|
83
103
|
recordMetrics: (name: string, duration: number, error?: string) => void;
|
|
84
104
|
emit?: (event: string, data: any) => void;
|
|
105
|
+
fallbackRules?: FallbackRule[];
|
|
85
106
|
}): ToolPipeline;
|
|
86
107
|
//# sourceMappingURL=tool-pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-pipeline.d.ts","sourceRoot":"","sources":["../src/tool-pipeline.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AAC9C,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAEpF,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAuB;IAEzC,mDAAmD;IACnD,GAAG,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;IAK7B,+CAA+C;IAC/C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,IAAI;IAK9C,qCAAqC;IACrC,MAAM,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;IAMhC,8CAA8C;IACxC,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAYrD,2CAA2C;IAC3C,IAAI,MAAM,IAAI,MAAM,CAEnB;CACF;AAKD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GAC7D,cAAc,CAWhB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EACnF,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAC7D,cAAc,CAchB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,GAAE,MAAgB,GAAG,cAAc,CA2BlF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,GACtE,cAAc,CAOhB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,MAAe,GAAG,cAAc,CAS7E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,GACvC,cAAc,CAWhB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GACpF,cAAc,CAWhB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9D,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnF,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACrF,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACvE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"tool-pipeline.d.ts","sourceRoot":"","sources":["../src/tool-pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-pipeline.js
CHANGED
|
@@ -180,9 +180,67 @@ export function executionMiddleware(executeTool) {
|
|
|
180
180
|
await next(); // allow post-execution middleware
|
|
181
181
|
};
|
|
182
182
|
}
|
|
183
|
+
/** Default fallback rules for common tool failures */
|
|
184
|
+
export const DEFAULT_FALLBACK_RULES = [
|
|
185
|
+
{
|
|
186
|
+
fromTool: 'url_fetch',
|
|
187
|
+
toTool: 'web_search',
|
|
188
|
+
transformArgs: (args) => ({ query: args.url || args.query || '' }),
|
|
189
|
+
condition: (err) => /timeout|timed?\s*out|4\d{2}|5\d{2}|ECONNREFUSED|ENOTFOUND|fetch failed/i.test(err),
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
fromTool: 'web_search',
|
|
193
|
+
toTool: 'url_fetch',
|
|
194
|
+
transformArgs: (args) => ({ url: `https://www.google.com/search?q=${encodeURIComponent(args.query || '')}` }),
|
|
195
|
+
condition: (err) => /rate.?limit|429|quota|exceeded/i.test(err),
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
fromTool: 'bash',
|
|
199
|
+
toTool: 'bash',
|
|
200
|
+
transformArgs: (args) => {
|
|
201
|
+
const cmd = String(args.command || '');
|
|
202
|
+
// If command not found, try with npx prefix
|
|
203
|
+
const match = cmd.match(/^(\S+)(.*)/);
|
|
204
|
+
if (match)
|
|
205
|
+
return { command: `npx ${match[1]}${match[2]}` };
|
|
206
|
+
return args;
|
|
207
|
+
},
|
|
208
|
+
condition: (err) => /command not found|not found in PATH|ENOENT/i.test(err),
|
|
209
|
+
},
|
|
210
|
+
];
|
|
211
|
+
/**
|
|
212
|
+
* Fallback middleware — retries failed tool calls with alternative tools.
|
|
213
|
+
* Checks error messages against fallback rules and reroutes on match.
|
|
214
|
+
*/
|
|
215
|
+
export function fallbackMiddleware(rules, execute) {
|
|
216
|
+
return async (ctx, next) => {
|
|
217
|
+
await next();
|
|
218
|
+
// Only attempt fallback if there was an error
|
|
219
|
+
if (!ctx.error)
|
|
220
|
+
return;
|
|
221
|
+
// Find a matching fallback rule
|
|
222
|
+
const rule = rules.find(r => r.fromTool === ctx.toolName && r.condition(ctx.error));
|
|
223
|
+
if (!rule)
|
|
224
|
+
return;
|
|
225
|
+
// Attempt the fallback
|
|
226
|
+
const fallbackArgs = rule.transformArgs(ctx.toolArgs);
|
|
227
|
+
try {
|
|
228
|
+
const fallbackResult = await execute(rule.toTool, fallbackArgs);
|
|
229
|
+
if (!fallbackResult.error) {
|
|
230
|
+
// Fallback succeeded — replace the error with the fallback result
|
|
231
|
+
ctx.result = `[Fallback: ${ctx.toolName} → ${rule.toTool}] ${fallbackResult.result}`;
|
|
232
|
+
ctx.error = undefined;
|
|
233
|
+
ctx.metadata.fallbackUsed = `${ctx.toolName} → ${rule.toTool}`;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// Fallback also failed — keep the original error
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
}
|
|
183
241
|
/**
|
|
184
242
|
* Create the default pipeline with the standard middleware stack.
|
|
185
|
-
* Order: telemetry? → permission → hooks → metrics → timeout → truncation → execution
|
|
243
|
+
* Order: telemetry? → permission → hooks → metrics → timeout → truncation → fallback? → execution
|
|
186
244
|
*/
|
|
187
245
|
export function createDefaultPipeline(deps) {
|
|
188
246
|
const pipeline = new ToolPipeline();
|
|
@@ -194,6 +252,9 @@ export function createDefaultPipeline(deps) {
|
|
|
194
252
|
pipeline.use(metricsMiddleware(deps.recordMetrics));
|
|
195
253
|
pipeline.use(timeoutMiddleware());
|
|
196
254
|
pipeline.use(truncationMiddleware());
|
|
255
|
+
if (deps.fallbackRules && deps.fallbackRules.length > 0) {
|
|
256
|
+
pipeline.use(fallbackMiddleware(deps.fallbackRules, deps.executeTool));
|
|
257
|
+
}
|
|
197
258
|
pipeline.use(executionMiddleware(deps.executeTool));
|
|
198
259
|
return pipeline;
|
|
199
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-pipeline.js","sourceRoot":"","sources":["../src/tool-pipeline.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-pipeline.js","sourceRoot":"","sources":["../src/tool-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Validate forged tool code for dangerous patterns */
|
|
2
|
+
export declare function validateCode(code: string): {
|
|
3
|
+
safe: boolean;
|
|
4
|
+
reason?: string;
|
|
5
|
+
};
|
|
6
|
+
/** Register the forge_tool itself */
|
|
7
|
+
export declare function registerForgeTools(): void;
|
|
8
|
+
//# sourceMappingURL=forge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge.d.ts","sourceRoot":"","sources":["../../src/tools/forge.ts"],"names":[],"mappings":"AA6EA,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAO7E;AAoDD,qCAAqC;AACrC,wBAAgB,kBAAkB,IAAI,IAAI,CAsFzC"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
// kbot forge_tool — Runtime Self-Extension
|
|
2
|
+
//
|
|
3
|
+
// Creates new tools on the fly from natural language + JavaScript code.
|
|
4
|
+
// Tools are registered immediately and persisted to ~/.kbot/plugins/forged/
|
|
5
|
+
// for survival across sessions.
|
|
6
|
+
//
|
|
7
|
+
// Security: regex blocklist rejects dangerous patterns.
|
|
8
|
+
// Sandbox: test execution with 5s timeout before registration.
|
|
9
|
+
import { registerTool } from './index.js';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
import { mkdirSync, writeFileSync, existsSync } from 'node:fs';
|
|
13
|
+
const FORGED_DIR = join(homedir(), '.kbot', 'plugins', 'forged');
|
|
14
|
+
/** Patterns that are never allowed in forged tool code */
|
|
15
|
+
const DANGEROUS_PATTERNS = [
|
|
16
|
+
// Code generation / eval
|
|
17
|
+
/\beval\s*\(/,
|
|
18
|
+
/\bnew\s+Function\b/,
|
|
19
|
+
/\bAsyncFunction\b/,
|
|
20
|
+
/\bgetPrototypeOf\b/,
|
|
21
|
+
// Process control
|
|
22
|
+
/\bprocess\.exit\b/,
|
|
23
|
+
/\bprocess\.kill\b/,
|
|
24
|
+
/\bprocess\.env\b/,
|
|
25
|
+
/\bprocess\.binding\b/,
|
|
26
|
+
// Child process — block both bare and node: protocol forms
|
|
27
|
+
/\brequire\s*\(\s*['"`](?:node:)?child_process['"`]\s*\)/,
|
|
28
|
+
/\bimport\s*\(\s*['"`](?:node:)?child_process['"`]\s*\)/,
|
|
29
|
+
/\bexecSync\b/,
|
|
30
|
+
/\bspawnSync\b/,
|
|
31
|
+
/\bexecFileSync\b/,
|
|
32
|
+
/\bexec\s*\(/,
|
|
33
|
+
/\bspawn\s*\(/,
|
|
34
|
+
/\bexecFile\s*\(/,
|
|
35
|
+
// Filesystem — block importing fs entirely (forged tools should not need raw fs)
|
|
36
|
+
/\brequire\s*\(\s*['"`](?:node:)?fs['"`]\s*\)/,
|
|
37
|
+
/\bimport\s*\(\s*['"`](?:node:)?fs['"`]\s*\)/,
|
|
38
|
+
/\brequire\s*\(\s*['"`](?:node:)?fs\/promises['"`]\s*\)/,
|
|
39
|
+
/\bimport\s*\(\s*['"`](?:node:)?fs\/promises['"`]\s*\)/,
|
|
40
|
+
/\bfs\.(rm|rmdir|unlink|writeFile|appendFile|rename|chmod|chown)Sync\s*\(/,
|
|
41
|
+
/\bfs\.\s*(rm|rmdir|unlink|writeFile|appendFile|rename|chmod|chown)\s*\(/,
|
|
42
|
+
// Network — block raw networking modules
|
|
43
|
+
/\brequire\s*\(\s*['"`](?:node:)?(?:net|dgram|tls|http2)['"`]\s*\)/,
|
|
44
|
+
/\bimport\s*\(\s*['"`](?:node:)?(?:net|dgram|tls|http2)['"`]\s*\)/,
|
|
45
|
+
// OS info / crypto access
|
|
46
|
+
/\brequire\s*\(\s*['"`](?:node:)?(?:os|crypto)['"`]\s*\)/,
|
|
47
|
+
/\bimport\s*\(\s*['"`](?:node:)?(?:os|crypto)['"`]\s*\)/,
|
|
48
|
+
// Prototype pollution vectors
|
|
49
|
+
/\bglobalThis\b/,
|
|
50
|
+
/\b__proto__\b/,
|
|
51
|
+
/\bconstructor\s*\[/,
|
|
52
|
+
/\bProxy\s*\(/,
|
|
53
|
+
/\bReflect\./,
|
|
54
|
+
/Object\.setPrototypeOf\b/,
|
|
55
|
+
/Object\.defineProperty\b/,
|
|
56
|
+
// Dynamic import with variables (evasion via string concatenation)
|
|
57
|
+
/\bimport\s*\(\s*[^'"`\s]/,
|
|
58
|
+
/\brequire\s*\(\s*[^'"`\s]/,
|
|
59
|
+
];
|
|
60
|
+
/** Tool names that cannot be overwritten by forge_tool */
|
|
61
|
+
const RESERVED_NAMES = new Set([
|
|
62
|
+
'forge_tool', 'bash', 'read_file', 'write_file', 'edit_file',
|
|
63
|
+
'glob', 'grep', 'git_status', 'git_diff', 'git_commit',
|
|
64
|
+
'web_search', 'url_fetch', 'mcp_search', 'mcp_install', 'mcp_connect', 'mcp_call',
|
|
65
|
+
]);
|
|
66
|
+
/** Validate forged tool code for dangerous patterns */
|
|
67
|
+
export function validateCode(code) {
|
|
68
|
+
for (const pattern of DANGEROUS_PATTERNS) {
|
|
69
|
+
if (pattern.test(code)) {
|
|
70
|
+
return { safe: false, reason: `Blocked: code contains dangerous pattern ${pattern.source}` };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return { safe: true };
|
|
74
|
+
}
|
|
75
|
+
/** Test-execute forged code with a 5s timeout to verify it works */
|
|
76
|
+
async function testExecution(code, testArgs) {
|
|
77
|
+
const AsyncFunction = Object.getPrototypeOf(async function () { }).constructor;
|
|
78
|
+
try {
|
|
79
|
+
const fn = new AsyncFunction('args', code);
|
|
80
|
+
const controller = new AbortController();
|
|
81
|
+
const timer = setTimeout(() => controller.abort(), 5000);
|
|
82
|
+
try {
|
|
83
|
+
const result = await Promise.race([
|
|
84
|
+
fn(testArgs),
|
|
85
|
+
new Promise((_, reject) => {
|
|
86
|
+
controller.signal.addEventListener('abort', () => reject(new Error('Forged tool test execution timed out after 5s')));
|
|
87
|
+
}),
|
|
88
|
+
]);
|
|
89
|
+
clearTimeout(timer);
|
|
90
|
+
return { success: true, output: String(result ?? 'OK') };
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
clearTimeout(timer);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
return { success: false, error: err instanceof Error ? err.message : String(err) };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Persist a forged tool to ~/.kbot/plugins/forged/ for future sessions */
|
|
101
|
+
function persistTool(name, description, parameters, code) {
|
|
102
|
+
if (!existsSync(FORGED_DIR)) {
|
|
103
|
+
mkdirSync(FORGED_DIR, { recursive: true });
|
|
104
|
+
}
|
|
105
|
+
const fileContent = `// Forged tool: ${name}
|
|
106
|
+
// Created: ${new Date().toISOString()}
|
|
107
|
+
// Description: ${description}
|
|
108
|
+
|
|
109
|
+
export default {
|
|
110
|
+
name: ${JSON.stringify(name)},
|
|
111
|
+
description: ${JSON.stringify(description)},
|
|
112
|
+
parameters: ${JSON.stringify(parameters, null, 2)},
|
|
113
|
+
tier: 'free',
|
|
114
|
+
execute: async (args) => {
|
|
115
|
+
${code.split('\n').map(line => ' ' + line).join('\n')}
|
|
116
|
+
},
|
|
117
|
+
}
|
|
118
|
+
`;
|
|
119
|
+
writeFileSync(join(FORGED_DIR, `${name}.js`), fileContent);
|
|
120
|
+
}
|
|
121
|
+
/** Register the forge_tool itself */
|
|
122
|
+
export function registerForgeTools() {
|
|
123
|
+
registerTool({
|
|
124
|
+
name: 'forge_tool',
|
|
125
|
+
description: 'Create a new tool at runtime from JavaScript code. The tool is immediately available and persisted for future sessions. Use this when no existing tool provides the capability you need.',
|
|
126
|
+
parameters: {
|
|
127
|
+
name: { type: 'string', description: 'Tool name (snake_case, e.g. "csv_parser")', required: true },
|
|
128
|
+
description: { type: 'string', description: 'What the tool does (shown to AI for tool selection)', required: true },
|
|
129
|
+
parameters: { type: 'object', description: 'Tool parameters as {paramName: {type, description, required?}}', required: true },
|
|
130
|
+
code: { type: 'string', description: 'JavaScript async function body. Receives `args` object with the parameters. Must return a string result.', required: true },
|
|
131
|
+
},
|
|
132
|
+
tier: 'free',
|
|
133
|
+
timeout: 10_000,
|
|
134
|
+
execute: async (args) => {
|
|
135
|
+
const name = String(args.name || '');
|
|
136
|
+
const description = String(args.description || '');
|
|
137
|
+
const code = String(args.code || '');
|
|
138
|
+
const parameters = (args.parameters || {});
|
|
139
|
+
// Validate inputs
|
|
140
|
+
if (!name || !description || !code) {
|
|
141
|
+
return 'Error: name, description, and code are all required.';
|
|
142
|
+
}
|
|
143
|
+
if (!/^[a-z][a-z0-9_]*$/.test(name)) {
|
|
144
|
+
return 'Error: name must be snake_case (lowercase letters, numbers, underscores, starting with a letter).';
|
|
145
|
+
}
|
|
146
|
+
if (name.length > 64) {
|
|
147
|
+
return 'Error: name must be 64 characters or fewer.';
|
|
148
|
+
}
|
|
149
|
+
if (RESERVED_NAMES.has(name)) {
|
|
150
|
+
return `Error: "${name}" is a built-in tool and cannot be overwritten.`;
|
|
151
|
+
}
|
|
152
|
+
// Security check
|
|
153
|
+
const validation = validateCode(code);
|
|
154
|
+
if (!validation.safe) {
|
|
155
|
+
return `Security error: ${validation.reason}`;
|
|
156
|
+
}
|
|
157
|
+
// Test execution with sample args
|
|
158
|
+
const testArgs = {};
|
|
159
|
+
for (const [key, param] of Object.entries(parameters)) {
|
|
160
|
+
if (param.type === 'string')
|
|
161
|
+
testArgs[key] = 'test';
|
|
162
|
+
else if (param.type === 'number')
|
|
163
|
+
testArgs[key] = 0;
|
|
164
|
+
else if (param.type === 'boolean')
|
|
165
|
+
testArgs[key] = false;
|
|
166
|
+
else if (param.type === 'array')
|
|
167
|
+
testArgs[key] = [];
|
|
168
|
+
else
|
|
169
|
+
testArgs[key] = {};
|
|
170
|
+
}
|
|
171
|
+
const testResult = await testExecution(code, testArgs);
|
|
172
|
+
if (!testResult.success) {
|
|
173
|
+
return `Forge failed: test execution error: ${testResult.error}\nFix the code and try again.`;
|
|
174
|
+
}
|
|
175
|
+
// Create the tool definition
|
|
176
|
+
const AsyncFunction = Object.getPrototypeOf(async function () { }).constructor;
|
|
177
|
+
const toolDef = {
|
|
178
|
+
name,
|
|
179
|
+
description,
|
|
180
|
+
parameters,
|
|
181
|
+
tier: 'free',
|
|
182
|
+
execute: async (toolArgs) => {
|
|
183
|
+
const fn = new AsyncFunction('args', code);
|
|
184
|
+
const result = await fn(toolArgs);
|
|
185
|
+
return String(result ?? '');
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
// Register immediately (available this session)
|
|
189
|
+
registerTool(toolDef);
|
|
190
|
+
// Persist for future sessions
|
|
191
|
+
try {
|
|
192
|
+
persistTool(name, description, parameters, code);
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// Persistence failure is non-fatal — tool is still available this session
|
|
196
|
+
}
|
|
197
|
+
// Record in learning engine (async, non-blocking)
|
|
198
|
+
try {
|
|
199
|
+
const { learnFact } = await import('../learning.js');
|
|
200
|
+
learnFact(`forge_tool: created "${name}" — ${description}`);
|
|
201
|
+
}
|
|
202
|
+
catch { /* non-critical */ }
|
|
203
|
+
return `Tool "${name}" forged successfully.\nTest output: ${testResult.output}\nPersisted to ~/.kbot/plugins/forged/${name}.js\nAvailable immediately — use it now.`;
|
|
204
|
+
},
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=forge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/tools/forge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge.test.d.ts","sourceRoot":"","sources":["../../src/tools/forge.test.ts"],"names":[],"mappings":""}
|