@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/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
- console.log(` ${chalk.dim(`${step.id}.`)} ${step.description}${tool}${deps}`);
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
- 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, skipPlanner: true });
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
  }
@@ -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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"}
@@ -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;CAC1C,GAAG,YAAY,CAcf"}
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;AAID,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,aAAa,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,GAAG,CAAA;IACjC,kFAAkF;IAClF,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;CACtC;AAED,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,EAAE,YAAY,EAyBhD,CAAA;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,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,GAChF,cAAc,CAyBhB;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;IACzC,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;CAC/B,GAAG,YAAY,CAiBf"}
@@ -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":"AAAA,0CAA0C;AAC1C,oEAAoE;AACpE,sDAAsD;AACtD,EAAE;AACF,0FAA0F;AAC1F,kDAAkD;AAClD,EAAE;AACF,SAAS;AACT,wCAAwC;AACxC,wDAAwD;AACxD,mDAAmD;AACnD,mDAAmD;AACnD,gCAAgC;AAiBhC,MAAM,OAAO,YAAY;IACf,UAAU,GAAqB,EAAE,CAAA;IAEzC,mDAAmD;IACnD,GAAG,CAAC,EAAkB;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,KAAa,EAAE,EAAkB;QACrC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qCAAqC;IACrC,MAAM,CAAC,EAAkB;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACvC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,OAAO,CAAC,GAAgB;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;YACrC,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAM;YACvB,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE,OAAM;YAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA;YACnC,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACrB,CAAC,CAAA;QACD,MAAM,IAAI,EAAE,CAAA;QACZ,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,2CAA2C;IAC3C,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;IAC/B,CAAC;CACF;AAGD,sCAAsC;AAEtC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,eAA8D;IAE9D,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;YAClB,GAAG,CAAC,WAAW,GAAG,2BAA2B,CAAA;YAC7C,GAAG,CAAC,KAAK,GAAG,8BAA8B,CAAA;YAC1C,OAAM;QACR,CAAC;QACD,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,UAAmF,EACnF,WAA8D;IAE9D,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;QACxD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACtB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;YAClB,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,0BAA0B,CAAA;YACrE,GAAG,CAAC,KAAK,GAAG,oBAAoB,GAAG,CAAC,WAAW,EAAE,CAAA;YACjD,OAAM;QACR,CAAC;QACD,MAAM,IAAI,EAAE,CAAA;QACZ,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YAC7B,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QACrD,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,iBAAyB,OAAO;IAChE,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,cAAc,CAAA;QACtD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;QAC3D,GAAG,CAAC,QAAQ,CAAC,eAAe,GAAG,UAAU,CAAA;QACzC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE;gBACN,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBAC9B,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;wBAC/C,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,QAAQ,oBAAoB,OAAO,IAAI,CAAC,CAAC,CAAA;oBACxE,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC;aACH,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAA;gBACvB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;gBAClB,GAAG,CAAC,WAAW,GAAG,qBAAqB,CAAA;YACzC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAA;QACrB,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,aAAuE;IAEvE,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxB,MAAM,IAAI,EAAE,CAAA;QACZ,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;QACnC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;IACxD,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB,MAAM;IAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,IAAI,EAAE,CAAA;QACZ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAA;YAC7C,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;gBACvC,sBAAsB,SAAS,iEAAiE,CAAA;QACpG,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAwC;IAExC,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QACnE,MAAM,IAAI,EAAE,CAAA;QACZ,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,WAAW,EAAE,GAAG,CAAC,UAAU;YAC3B,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK;YACnB,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAqF;IAErF,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC5D,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;YAC1B,IAAI,MAAM,CAAC,KAAK;gBAAE,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QAC5C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;QACxC,CAAC;QACD,MAAM,IAAI,EAAE,CAAA,CAAC,kCAAkC;IACjD,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAOrC;IACC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;IAEnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9C,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IACxD,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAA;IACnD,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;IAEnD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=forge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge.test.d.ts","sourceRoot":"","sources":["../../src/tools/forge.test.ts"],"names":[],"mappings":""}