@oflow-ai/core 0.1.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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +81 -0
  3. package/dist/agents/index.d.ts +35 -0
  4. package/dist/agents/index.js +233 -0
  5. package/dist/ai/chinese-provider.d.ts +146 -0
  6. package/dist/ai/chinese-provider.js +193 -0
  7. package/dist/ai/custom-provider.d.ts +11 -0
  8. package/dist/ai/custom-provider.js +113 -0
  9. package/dist/ai/index.d.ts +7 -0
  10. package/dist/ai/index.js +42 -0
  11. package/dist/ai/openai-provider.d.ts +18 -0
  12. package/dist/ai/openai-provider.js +161 -0
  13. package/dist/config/index.d.ts +20 -0
  14. package/dist/config/index.js +83 -0
  15. package/dist/conversation.d.ts +26 -0
  16. package/dist/conversation.js +126 -0
  17. package/dist/index.d.ts +10 -0
  18. package/dist/index.js +72 -0
  19. package/dist/mcp/index.d.ts +48 -0
  20. package/dist/mcp/index.js +175 -0
  21. package/dist/sandbox/index.d.ts +31 -0
  22. package/dist/sandbox/index.js +197 -0
  23. package/dist/skills/index.d.ts +16 -0
  24. package/dist/skills/index.js +169 -0
  25. package/dist/tools/ask-user-question.d.ts +62 -0
  26. package/dist/tools/ask-user-question.js +71 -0
  27. package/dist/tools/base.d.ts +16 -0
  28. package/dist/tools/base.js +39 -0
  29. package/dist/tools/glob.d.ts +27 -0
  30. package/dist/tools/glob.js +125 -0
  31. package/dist/tools/image-read.d.ts +42 -0
  32. package/dist/tools/image-read.js +125 -0
  33. package/dist/tools/index.d.ts +27 -0
  34. package/dist/tools/index.js +127 -0
  35. package/dist/tools/list-directory.d.ts +28 -0
  36. package/dist/tools/list-directory.js +94 -0
  37. package/dist/tools/pdf-extract.d.ts +32 -0
  38. package/dist/tools/pdf-extract.js +130 -0
  39. package/dist/tools/read-file.d.ts +31 -0
  40. package/dist/tools/read-file.js +116 -0
  41. package/dist/tools/replace.d.ts +35 -0
  42. package/dist/tools/replace.js +93 -0
  43. package/dist/tools/run-shell-command.d.ts +35 -0
  44. package/dist/tools/run-shell-command.js +81 -0
  45. package/dist/tools/save-memory.d.ts +22 -0
  46. package/dist/tools/save-memory.js +91 -0
  47. package/dist/tools/search-file-content.d.ts +42 -0
  48. package/dist/tools/search-file-content.js +153 -0
  49. package/dist/tools/task.d.ts +46 -0
  50. package/dist/tools/task.js +54 -0
  51. package/dist/tools/web-fetch.d.ts +26 -0
  52. package/dist/tools/web-fetch.js +81 -0
  53. package/dist/tools/web-search.d.ts +35 -0
  54. package/dist/tools/web-search.js +86 -0
  55. package/dist/tools/write-file.d.ts +25 -0
  56. package/dist/tools/write-file.js +76 -0
  57. package/dist/types/index.d.ts +166 -0
  58. package/dist/types/index.js +43 -0
  59. package/package.json +54 -0
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RunShellCommandTool = void 0;
4
+ const base_1 = require("./base");
5
+ const child_process_1 = require("child_process");
6
+ class RunShellCommandTool extends base_1.BaseTool {
7
+ name = 'run_shell_command';
8
+ description = 'Executes a shell command in the terminal. Supports both foreground and background execution.';
9
+ parameters = {
10
+ type: 'object',
11
+ properties: {
12
+ command: {
13
+ type: 'string',
14
+ description: 'The shell command to execute'
15
+ },
16
+ description: {
17
+ type: 'string',
18
+ description: 'Brief description of what the command does'
19
+ },
20
+ timeout: {
21
+ type: 'number',
22
+ description: 'Timeout in seconds (default: 120)'
23
+ },
24
+ run_in_bg: {
25
+ type: 'boolean',
26
+ description: 'If true, run command in background'
27
+ }
28
+ },
29
+ required: ['command']
30
+ };
31
+ async execute(params, options) {
32
+ this.validateRequired(params, ['command']);
33
+ const timeout = (params.timeout || 120) * 1000;
34
+ const workingDir = options?.workingDirectory || process.cwd();
35
+ return new Promise((resolve) => {
36
+ const isWindows = process.platform === 'win32';
37
+ const shell = isWindows ? 'powershell.exe' : '/bin/bash';
38
+ const shellArgs = isWindows
39
+ ? ['-NoProfile', '-Command', params.command]
40
+ : ['-c', params.command];
41
+ const proc = (0, child_process_1.spawn)(shell, shellArgs, {
42
+ cwd: workingDir,
43
+ env: process.env,
44
+ timeout: timeout
45
+ });
46
+ let stdout = '';
47
+ let stderr = '';
48
+ let timeoutId = null;
49
+ proc.stdout.on('data', (data) => {
50
+ stdout += data.toString();
51
+ });
52
+ proc.stderr.on('data', (data) => {
53
+ stderr += data.toString();
54
+ });
55
+ proc.on('error', (error) => {
56
+ resolve((0, base_1.formatToolError)(error));
57
+ });
58
+ proc.on('close', (code, signal) => {
59
+ if (timeoutId)
60
+ clearTimeout(timeoutId);
61
+ let output = `Command: ${params.command}\n`;
62
+ output += `Directory: ${workingDir}\n`;
63
+ output += `Exit Code: ${code}\n\n`;
64
+ if (stdout) {
65
+ output += `Stdout:\n${stdout}\n`;
66
+ }
67
+ if (stderr) {
68
+ output += `Stderr:\n${stderr}\n`;
69
+ }
70
+ resolve(output);
71
+ });
72
+ // Handle timeout
73
+ timeoutId = setTimeout(() => {
74
+ proc.kill();
75
+ resolve(`Command timed out after ${timeout / 1000} seconds`);
76
+ }, timeout);
77
+ });
78
+ }
79
+ }
80
+ exports.RunShellCommandTool = RunShellCommandTool;
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLXNoZWxsLWNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvcnVuLXNoZWxsLWNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQXVFO0FBQ3ZFLGlEQUFzQztBQVN0QyxNQUFhLG1CQUFvQixTQUFRLGVBQStCO0lBQ3RFLElBQUksR0FBRyxtQkFBbUIsQ0FBQztJQUMzQixXQUFXLEdBQUcsOEZBQThGLENBQUM7SUFDN0csVUFBVSxHQUFHO1FBQ1gsSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUU7WUFDVixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLDhCQUE4QjthQUM1QztZQUNELFdBQVcsRUFBRTtnQkFDWCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsNENBQTRDO2FBQzFEO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxtQ0FBbUM7YUFDakQ7WUFDRCxTQUFTLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsV0FBVyxFQUFFLG9DQUFvQzthQUNsRDtTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO0tBQ3RCLENBQUM7SUFFRixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQTZCLEVBQUUsT0FBNEI7UUFDdkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFM0MsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMvQyxNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTlELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQztZQUMvQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFDekQsTUFBTSxTQUFTLEdBQUcsU0FBUztnQkFDekIsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUM1QyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTNCLE1BQU0sSUFBSSxHQUFHLElBQUEscUJBQUssRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNuQyxHQUFHLEVBQUUsVUFBVTtnQkFDZixHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7Z0JBQ2hCLE9BQU8sRUFBRSxPQUFPO2FBQ2pCLENBQUMsQ0FBQztZQUVILElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNoQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxTQUFTLEdBQTBCLElBQUksQ0FBQztZQUU1QyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDOUIsTUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM5QixNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDekIsT0FBTyxDQUFDLElBQUEsc0JBQWUsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksU0FBUztvQkFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRXZDLElBQUksTUFBTSxHQUFHLFlBQVksTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDO2dCQUM1QyxNQUFNLElBQUksY0FBYyxVQUFVLElBQUksQ0FBQztnQkFDdkMsTUFBTSxJQUFJLGNBQWMsSUFBSSxNQUFNLENBQUM7Z0JBRW5DLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1gsTUFBTSxJQUFJLFlBQVksTUFBTSxJQUFJLENBQUM7Z0JBQ25DLENBQUM7Z0JBRUQsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxNQUFNLElBQUksWUFBWSxNQUFNLElBQUksQ0FBQztnQkFDbkMsQ0FBQztnQkFFRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7WUFFSCxpQkFBaUI7WUFDakIsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDWixPQUFPLENBQUMsMkJBQTJCLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDO1lBQy9ELENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBdEZELGtEQXNGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUb29sLCBUb29sRXhlY3V0ZU9wdGlvbnMsIGZvcm1hdFRvb2xFcnJvciB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuXG5pbnRlcmZhY2UgUnVuU2hlbGxDb21tYW5kUGFyYW1zIHtcbiAgY29tbWFuZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGltZW91dD86IG51bWJlcjtcbiAgcnVuX2luX2JnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFJ1blNoZWxsQ29tbWFuZFRvb2wgZXh0ZW5kcyBCYXNlVG9vbDxSdW5TaGVsbENvbW1hbmRQYXJhbXM+IHtcbiAgbmFtZSA9ICdydW5fc2hlbGxfY29tbWFuZCc7XG4gIGRlc2NyaXB0aW9uID0gJ0V4ZWN1dGVzIGEgc2hlbGwgY29tbWFuZCBpbiB0aGUgdGVybWluYWwuIFN1cHBvcnRzIGJvdGggZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBleGVjdXRpb24uJztcbiAgcGFyYW1ldGVycyA9IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBjb21tYW5kOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBzaGVsbCBjb21tYW5kIHRvIGV4ZWN1dGUnXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnQnJpZWYgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgY29tbWFuZCBkb2VzJ1xuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IHtcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGltZW91dCBpbiBzZWNvbmRzIChkZWZhdWx0OiAxMjApJ1xuICAgICAgfSxcbiAgICAgIHJ1bl9pbl9iZzoge1xuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnSWYgdHJ1ZSwgcnVuIGNvbW1hbmQgaW4gYmFja2dyb3VuZCdcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ2NvbW1hbmQnXVxuICB9O1xuXG4gIGFzeW5jIGV4ZWN1dGUocGFyYW1zOiBSdW5TaGVsbENvbW1hbmRQYXJhbXMsIG9wdGlvbnM/OiBUb29sRXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMudmFsaWRhdGVSZXF1aXJlZChwYXJhbXMsIFsnY29tbWFuZCddKTtcblxuICAgIGNvbnN0IHRpbWVvdXQgPSAocGFyYW1zLnRpbWVvdXQgfHwgMTIwKSAqIDEwMDA7XG4gICAgY29uc3Qgd29ya2luZ0RpciA9IG9wdGlvbnM/LndvcmtpbmdEaXJlY3RvcnkgfHwgcHJvY2Vzcy5jd2QoKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgaXNXaW5kb3dzID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJztcbiAgICAgIGNvbnN0IHNoZWxsID0gaXNXaW5kb3dzID8gJ3Bvd2Vyc2hlbGwuZXhlJyA6ICcvYmluL2Jhc2gnO1xuICAgICAgY29uc3Qgc2hlbGxBcmdzID0gaXNXaW5kb3dzIFxuICAgICAgICA/IFsnLU5vUHJvZmlsZScsICctQ29tbWFuZCcsIHBhcmFtcy5jb21tYW5kXVxuICAgICAgICA6IFsnLWMnLCBwYXJhbXMuY29tbWFuZF07XG5cbiAgICAgIGNvbnN0IHByb2MgPSBzcGF3bihzaGVsbCwgc2hlbGxBcmdzLCB7XG4gICAgICAgIGN3ZDogd29ya2luZ0RpcixcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgdGltZW91dDogdGltZW91dFxuICAgICAgfSk7XG5cbiAgICAgIGxldCBzdGRvdXQgPSAnJztcbiAgICAgIGxldCBzdGRlcnIgPSAnJztcbiAgICAgIGxldCB0aW1lb3V0SWQ6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbCA9IG51bGw7XG5cbiAgICAgIHByb2Muc3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICAgICAgc3Rkb3V0ICs9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIH0pO1xuXG4gICAgICBwcm9jLnN0ZGVyci5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgICAgIHN0ZGVyciArPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICB9KTtcblxuICAgICAgcHJvYy5vbignZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgICAgcmVzb2x2ZShmb3JtYXRUb29sRXJyb3IoZXJyb3IpKTtcbiAgICAgIH0pO1xuXG4gICAgICBwcm9jLm9uKCdjbG9zZScsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgaWYgKHRpbWVvdXRJZCkgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG5cbiAgICAgICAgbGV0IG91dHB1dCA9IGBDb21tYW5kOiAke3BhcmFtcy5jb21tYW5kfVxcbmA7XG4gICAgICAgIG91dHB1dCArPSBgRGlyZWN0b3J5OiAke3dvcmtpbmdEaXJ9XFxuYDtcbiAgICAgICAgb3V0cHV0ICs9IGBFeGl0IENvZGU6ICR7Y29kZX1cXG5cXG5gO1xuXG4gICAgICAgIGlmIChzdGRvdXQpIHtcbiAgICAgICAgICBvdXRwdXQgKz0gYFN0ZG91dDpcXG4ke3N0ZG91dH1cXG5gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZGVycikge1xuICAgICAgICAgIG91dHB1dCArPSBgU3RkZXJyOlxcbiR7c3RkZXJyfVxcbmA7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlKG91dHB1dCk7XG4gICAgICB9KTtcblxuICAgICAgLy8gSGFuZGxlIHRpbWVvdXRcbiAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBwcm9jLmtpbGwoKTtcbiAgICAgICAgcmVzb2x2ZShgQ29tbWFuZCB0aW1lZCBvdXQgYWZ0ZXIgJHt0aW1lb3V0IC8gMTAwMH0gc2Vjb25kc2ApO1xuICAgICAgfSwgdGltZW91dCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { BaseTool, ToolExecuteOptions } from './base';
2
+ interface SaveMemoryParams {
3
+ fact: string;
4
+ }
5
+ export declare class SaveMemoryTool extends BaseTool<SaveMemoryParams> {
6
+ name: string;
7
+ description: string;
8
+ parameters: {
9
+ type: string;
10
+ properties: {
11
+ fact: {
12
+ type: string;
13
+ description: string;
14
+ };
15
+ };
16
+ required: string[];
17
+ };
18
+ private memoryFile;
19
+ constructor();
20
+ execute(params: SaveMemoryParams, options?: ToolExecuteOptions): Promise<string>;
21
+ }
22
+ export {};
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SaveMemoryTool = void 0;
37
+ const base_1 = require("./base");
38
+ const fs = __importStar(require("fs/promises"));
39
+ const path = __importStar(require("path"));
40
+ class SaveMemoryTool extends base_1.BaseTool {
41
+ name = 'save_memory';
42
+ description = 'Saves a specific piece of information or fact to long-term memory for future sessions.';
43
+ parameters = {
44
+ type: 'object',
45
+ properties: {
46
+ fact: {
47
+ type: 'string',
48
+ description: 'The specific fact or piece of information to remember'
49
+ }
50
+ },
51
+ required: ['fact']
52
+ };
53
+ memoryFile;
54
+ constructor() {
55
+ super();
56
+ // 内存文件存储在用户主目录
57
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '';
58
+ const oflowDir = path.join(homeDir, '.oflow');
59
+ this.memoryFile = path.join(oflowDir, 'memory.json');
60
+ }
61
+ async execute(params, options) {
62
+ this.validateRequired(params, ['fact']);
63
+ try {
64
+ // 确保目录存在
65
+ const dir = path.dirname(this.memoryFile);
66
+ await fs.mkdir(dir, { recursive: true });
67
+ // 读取现有内存
68
+ let memories = [];
69
+ try {
70
+ const content = await fs.readFile(this.memoryFile, 'utf-8');
71
+ memories = JSON.parse(content);
72
+ }
73
+ catch {
74
+ // 文件不存在,使用空数组
75
+ }
76
+ // 添加新记忆
77
+ memories.push({
78
+ fact: params.fact,
79
+ createdAt: new Date().toISOString()
80
+ });
81
+ // 保存
82
+ await fs.writeFile(this.memoryFile, JSON.stringify(memories, null, 2), 'utf-8');
83
+ return `✓ Saved to memory: "${params.fact}"`;
84
+ }
85
+ catch (error) {
86
+ return (0, base_1.formatToolError)(error);
87
+ }
88
+ }
89
+ }
90
+ exports.SaveMemoryTool = SaveMemoryTool;
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1tZW1vcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvc2F2ZS1tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQXVFO0FBQ3ZFLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFNN0IsTUFBYSxjQUFlLFNBQVEsZUFBMEI7SUFDNUQsSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUNyQixXQUFXLEdBQUcsd0ZBQXdGLENBQUM7SUFDdkcsVUFBVSxHQUFHO1FBQ1gsSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUU7WUFDVixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHVEQUF1RDthQUNyRTtTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO0tBQ25CLENBQUM7SUFFTSxVQUFVLENBQVM7SUFFM0I7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLGVBQWU7UUFDZixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDbEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUF3QixFQUFFLE9BQTRCO1FBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQztZQUNILFNBQVM7WUFDVCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFekMsU0FBUztZQUNULElBQUksUUFBUSxHQUErQyxFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUM1RCxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLGNBQWM7WUFDaEIsQ0FBQztZQUVELFFBQVE7WUFDUixRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNaLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ3BDLENBQUMsQ0FBQztZQUVILEtBQUs7WUFDTCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFaEYsT0FBTyx1QkFBdUIsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDO1FBQy9DLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFBLHNCQUFlLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXZERCx3Q0F1REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVG9vbCwgVG9vbEV4ZWN1dGVPcHRpb25zLCBmb3JtYXRUb29sRXJyb3IgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuaW50ZXJmYWNlIFNhdmVNZW1vcnlQYXJhbXMge1xuICBmYWN0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBTYXZlTWVtb3J5VG9vbCBleHRlbmRzIEJhc2VUb29sPFNhdmVNZW1vcnlQYXJhbXM+IHtcbiAgbmFtZSA9ICdzYXZlX21lbW9yeSc7XG4gIGRlc2NyaXB0aW9uID0gJ1NhdmVzIGEgc3BlY2lmaWMgcGllY2Ugb2YgaW5mb3JtYXRpb24gb3IgZmFjdCB0byBsb25nLXRlcm0gbWVtb3J5IGZvciBmdXR1cmUgc2Vzc2lvbnMuJztcbiAgcGFyYW1ldGVycyA9IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBmYWN0OiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBzcGVjaWZpYyBmYWN0IG9yIHBpZWNlIG9mIGluZm9ybWF0aW9uIHRvIHJlbWVtYmVyJ1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IFsnZmFjdCddXG4gIH07XG5cbiAgcHJpdmF0ZSBtZW1vcnlGaWxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICAvLyDlhoXlrZjmlofku7blrZjlgqjlnKjnlKjmiLfkuLvnm67lvZVcbiAgICBjb25zdCBob21lRGlyID0gcHJvY2Vzcy5lbnYuSE9NRSB8fCBwcm9jZXNzLmVudi5VU0VSUFJPRklMRSB8fCAnJztcbiAgICBjb25zdCBvZmxvd0RpciA9IHBhdGguam9pbihob21lRGlyLCAnLm9mbG93Jyk7XG4gICAgdGhpcy5tZW1vcnlGaWxlID0gcGF0aC5qb2luKG9mbG93RGlyLCAnbWVtb3J5Lmpzb24nKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGUocGFyYW1zOiBTYXZlTWVtb3J5UGFyYW1zLCBvcHRpb25zPzogVG9vbEV4ZWN1dGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aGlzLnZhbGlkYXRlUmVxdWlyZWQocGFyYW1zLCBbJ2ZhY3QnXSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8g56Gu5L+d55uu5b2V5a2Y5ZyoXG4gICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUodGhpcy5tZW1vcnlGaWxlKTtcbiAgICAgIGF3YWl0IGZzLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAgIC8vIOivu+WPlueOsOacieWGheWtmFxuICAgICAgbGV0IG1lbW9yaWVzOiBBcnJheTx7IGZhY3Q6IHN0cmluZzsgY3JlYXRlZEF0OiBzdHJpbmcgfT4gPSBbXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZSh0aGlzLm1lbW9yeUZpbGUsICd1dGYtOCcpO1xuICAgICAgICBtZW1vcmllcyA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8g5paH5Lu25LiN5a2Y5Zyo77yM5L2/55So56m65pWw57uEXG4gICAgICB9XG5cbiAgICAgIC8vIOa3u+WKoOaWsOiusOW/hlxuICAgICAgbWVtb3JpZXMucHVzaCh7XG4gICAgICAgIGZhY3Q6IHBhcmFtcy5mYWN0LFxuICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgICAgfSk7XG5cbiAgICAgIC8vIOS/neWtmFxuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHRoaXMubWVtb3J5RmlsZSwgSlNPTi5zdHJpbmdpZnkobWVtb3JpZXMsIG51bGwsIDIpLCAndXRmLTgnKTtcblxuICAgICAgcmV0dXJuIGDinJMgU2F2ZWQgdG8gbWVtb3J5OiBcIiR7cGFyYW1zLmZhY3R9XCJgO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gZm9ybWF0VG9vbEVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,42 @@
1
+ import { BaseTool, ToolExecuteOptions } from './base';
2
+ interface SearchFileContentParams {
3
+ pattern: string;
4
+ path?: string;
5
+ include?: string;
6
+ case_sensitive?: boolean;
7
+ context?: number;
8
+ }
9
+ export declare class SearchFileContentTool extends BaseTool<SearchFileContentParams> {
10
+ name: string;
11
+ description: string;
12
+ parameters: {
13
+ type: string;
14
+ properties: {
15
+ pattern: {
16
+ type: string;
17
+ description: string;
18
+ };
19
+ path: {
20
+ type: string;
21
+ description: string;
22
+ };
23
+ include: {
24
+ type: string;
25
+ description: string;
26
+ };
27
+ case_sensitive: {
28
+ type: string;
29
+ description: string;
30
+ };
31
+ context: {
32
+ type: string;
33
+ description: string;
34
+ };
35
+ };
36
+ required: string[];
37
+ };
38
+ execute(params: SearchFileContentParams, options?: ToolExecuteOptions): Promise<string>;
39
+ private searchInDir;
40
+ private shouldInclude;
41
+ }
42
+ export {};
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SearchFileContentTool = void 0;
37
+ const base_1 = require("./base");
38
+ const fs = __importStar(require("fs/promises"));
39
+ const path = __importStar(require("path"));
40
+ class SearchFileContentTool extends base_1.BaseTool {
41
+ name = 'search_file_content';
42
+ description = 'Searches for a pattern within files in a directory using regex.';
43
+ parameters = {
44
+ type: 'object',
45
+ properties: {
46
+ pattern: {
47
+ type: 'string',
48
+ description: 'The regular expression pattern to search for'
49
+ },
50
+ path: {
51
+ type: 'string',
52
+ description: 'Optional: The path to search within'
53
+ },
54
+ include: {
55
+ type: 'string',
56
+ description: 'Optional: A glob pattern to filter files'
57
+ },
58
+ case_sensitive: {
59
+ type: 'boolean',
60
+ description: 'If true, search is case-sensitive'
61
+ },
62
+ context: {
63
+ type: 'number',
64
+ description: 'Number of lines of context around matches'
65
+ }
66
+ },
67
+ required: ['pattern']
68
+ };
69
+ async execute(params, options) {
70
+ this.validateRequired(params, ['pattern']);
71
+ const workingDir = options?.workingDirectory || process.cwd();
72
+ const searchPath = params.path || workingDir;
73
+ const caseSensitive = params.case_sensitive ?? false;
74
+ try {
75
+ const regex = new RegExp(params.pattern, caseSensitive ? 'g' : 'gi');
76
+ const results = [];
77
+ const maxResults = 500;
78
+ await this.searchInDir(searchPath, regex, params.include, results, maxResults);
79
+ if (results.length === 0) {
80
+ return `No matches found for pattern: ${params.pattern}`;
81
+ }
82
+ const output = results.map(r => {
83
+ return `${r.file}:${r.line}: ${r.content}`;
84
+ }).join('\n');
85
+ return `Found ${results.length} matches:\n\n${output}`;
86
+ }
87
+ catch (error) {
88
+ return (0, base_1.formatToolError)(error);
89
+ }
90
+ }
91
+ async searchInDir(dir, regex, include, results, maxResults) {
92
+ if (results.length >= maxResults)
93
+ return;
94
+ const entries = await fs.readdir(dir, { withFileTypes: true });
95
+ for (const entry of entries) {
96
+ if (results.length >= maxResults)
97
+ return;
98
+ const fullPath = path.join(dir, entry.name);
99
+ if (entry.isDirectory()) {
100
+ if (['node_modules', '.git', 'dist', 'build', '.next'].includes(entry.name)) {
101
+ continue;
102
+ }
103
+ await this.searchInDir(fullPath, regex, include, results, maxResults);
104
+ }
105
+ else if (entry.isFile()) {
106
+ if (!this.shouldInclude(fullPath, include)) {
107
+ continue;
108
+ }
109
+ try {
110
+ const content = await fs.readFile(fullPath, 'utf-8');
111
+ const lines = content.split('\n');
112
+ lines.forEach((line, index) => {
113
+ if (results.length >= maxResults)
114
+ return;
115
+ const match = line.match(regex);
116
+ if (match) {
117
+ results.push({
118
+ file: fullPath,
119
+ line: index + 1,
120
+ content: line.trim(),
121
+ match: match[0]
122
+ });
123
+ }
124
+ });
125
+ }
126
+ catch {
127
+ // Skip files that can't be read as text
128
+ }
129
+ }
130
+ }
131
+ }
132
+ shouldInclude(filePath, include) {
133
+ if (!include) {
134
+ // Default: only text files
135
+ const ext = path.extname(filePath).toLowerCase();
136
+ const textExts = [
137
+ '.ts', '.tsx', '.js', '.jsx', '.json', '.md', '.txt',
138
+ '.py', '.java', '.c', '.cpp', '.h', '.go', '.rs',
139
+ '.yaml', '.yml', '.toml', '.ini', '.env', '.sh',
140
+ '.html', '.css', '.scss', '.less', '.vue', '.svelte'
141
+ ];
142
+ return textExts.includes(ext) || ext === '';
143
+ }
144
+ // Simple include pattern matching
145
+ if (include.startsWith('*.')) {
146
+ const ext = include.slice(1);
147
+ return filePath.endsWith(ext);
148
+ }
149
+ return filePath.includes(include);
150
+ }
151
+ }
152
+ exports.SearchFileContentTool = SearchFileContentTool;
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbGUtY29udGVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9zZWFyY2gtZmlsZS1jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUF1RTtBQUN2RSxnREFBa0M7QUFDbEMsMkNBQTZCO0FBaUI3QixNQUFhLHFCQUFzQixTQUFRLGVBQWlDO0lBQzFFLElBQUksR0FBRyxxQkFBcUIsQ0FBQztJQUM3QixXQUFXLEdBQUcsaUVBQWlFLENBQUM7SUFDaEYsVUFBVSxHQUFHO1FBQ1gsSUFBSSxFQUFFLFFBQVE7UUFDZCxVQUFVLEVBQUU7WUFDVixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLDhDQUE4QzthQUM1RDtZQUNELElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUscUNBQXFDO2FBQ25EO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSwwQ0FBMEM7YUFDeEQ7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsV0FBVyxFQUFFLG1DQUFtQzthQUNqRDtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsMkNBQTJDO2FBQ3pEO1NBQ0Y7UUFDRCxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7S0FDdEIsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBK0IsRUFBRSxPQUE0QjtRQUN6RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUUzQyxNQUFNLFVBQVUsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzlELE1B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QUFHLEtBQUssRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFFRCxrQ0FBa0M7UUFDbEMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFoSUQsc0RBZ0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVRvb2wsIFRvb2xFeGVjdXRlT3B0aW9ucywgZm9ybWF0VG9vbEVycm9yIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzL3Byb21pc2VzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmludGVyZmFjZSBTZWFyY2hGaWxlQ29udGVudFBhcmFtcyB7XG4gIHBhdHRlcm46IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgaW5jbHVkZT86IHN0cmluZztcbiAgY2FzZV9zZW5zaXRpdmU/OiBib29sZWFuO1xuICBjb250ZXh0PzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgU2VhcmNoUmVzdWx0IHtcbiAgZmlsZTogc3RyaW5nO1xuICBsaW5lOiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgbWF0Y2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNlYXJjaEZpbGVDb250ZW50VG9vbCBleHRlbmRzIEJhc2VUb29sPFNlYXJjaEZpbGVDb250ZW50UGFyYW1zPiB7XG4gIG5hbWUgPSAnc2VhcmNoX2ZpbGVfY29udGVudCc7XG4gIGRlc2NyaXB0aW9uID0gJ1NlYXJjaGVzIGZvciBhIHBhdHRlcm4gd2l0aGluIGZpbGVzIGluIGEgZGlyZWN0b3J5IHVzaW5nIHJlZ2V4Lic7XG4gIHBhcmFtZXRlcnMgPSB7XG4gICAgdHlwZTogJ29iamVjdCcsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgcGF0dGVybjoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdG8gc2VhcmNoIGZvcidcbiAgICAgIH0sXG4gICAgICBwYXRoOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGlvbmFsOiBUaGUgcGF0aCB0byBzZWFyY2ggd2l0aGluJ1xuICAgICAgfSxcbiAgICAgIGluY2x1ZGU6IHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnT3B0aW9uYWw6IEEgZ2xvYiBwYXR0ZXJuIHRvIGZpbHRlciBmaWxlcydcbiAgICAgIH0sXG4gICAgICBjYXNlX3NlbnNpdGl2ZToge1xuICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnSWYgdHJ1ZSwgc2VhcmNoIGlzIGNhc2Utc2Vuc2l0aXZlJ1xuICAgICAgfSxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTnVtYmVyIG9mIGxpbmVzIG9mIGNvbnRleHQgYXJvdW5kIG1hdGNoZXMnXG4gICAgICB9XG4gICAgfSxcbiAgICByZXF1aXJlZDogWydwYXR0ZXJuJ11cbiAgfTtcblxuICBhc3luYyBleGVjdXRlKHBhcmFtczogU2VhcmNoRmlsZUNvbnRlbnRQYXJhbXMsIG9wdGlvbnM/OiBUb29sRXhlY3V0ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMudmFsaWRhdGVSZXF1aXJlZChwYXJhbXMsIFsncGF0dGVybiddKTtcblxuICAgIGNvbnN0IHdvcmtpbmdEaXIgPSBvcHRpb25zPy53b3JraW5nRGlyZWN0b3J5IHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3Qgc2VhcmNoUGF0aCA9IHBhcmFtcy5wYXRoIHx8IHdvcmtpbmdEaXI7XG4gICAgY29uc3QgY2FzZVNlbnNpdGl2ZSA9IHBhcmFtcy5jYXNlX3NlbnNpdGl2ZSA/PyBmYWxzZTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAocGFyYW1zLnBhdHRlcm4sIGNhc2VTZW5zaXRpdmUgPyAnZycgOiAnZ2knKTtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdID0gW107XG4gICAgICBjb25zdCBtYXhSZXN1bHRzID0gNTAwO1xuXG4gICAgICBhd2FpdCB0aGlzLnNlYXJjaEluRGlyKHNlYXJjaFBhdGgsIHJlZ2V4LCBwYXJhbXMuaW5jbHVkZSwgcmVzdWx0cywgbWF4UmVzdWx0cyk7XG5cbiAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gYE5vIG1hdGNoZXMgZm91bmQgZm9yIHBhdHRlcm46ICR7cGFyYW1zLnBhdHRlcm59YDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0cy5tYXAociA9PiB7XG4gICAgICAgIHJldHVybiBgJHtyLmZpbGV9OiR7ci5saW5lfTogJHtyLmNvbnRlbnR9YDtcbiAgICAgIH0pLmpvaW4oJ1xcbicpO1xuXG4gICAgICByZXR1cm4gYEZvdW5kICR7cmVzdWx0cy5sZW5ndGh9IG1hdGNoZXM6XFxuXFxuJHtvdXRwdXR9YDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZvcm1hdFRvb2xFcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZWFyY2hJbkRpcihcbiAgICBkaXI6IHN0cmluZyxcbiAgICByZWdleDogUmVnRXhwLFxuICAgIGluY2x1ZGU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICByZXN1bHRzOiBTZWFyY2hSZXN1bHRbXSxcbiAgICBtYXhSZXN1bHRzOiBudW1iZXJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHJlc3VsdHMubGVuZ3RoID49IG1heFJlc3VsdHMpIHJldHVybjtcblxuICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBpZiAocmVzdWx0cy5sZW5ndGggPj0gbWF4UmVzdWx0cykgcmV0dXJuO1xuXG4gICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihkaXIsIGVudHJ5Lm5hbWUpO1xuXG4gICAgICBpZiAoZW50cnkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBpZiAoWydub2RlX21vZHVsZXMnLCAnLmdpdCcsICdkaXN0JywgJ2J1aWxkJywgJy5uZXh0J10uaW5jbHVkZXMoZW50cnkubmFtZSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnNlYXJjaEluRGlyKGZ1bGxQYXRoLCByZWdleCwgaW5jbHVkZSwgcmVzdWx0cywgbWF4UmVzdWx0cyk7XG4gICAgICB9IGVsc2UgaWYgKGVudHJ5LmlzRmlsZSgpKSB7XG4gICAgICAgIGlmICghdGhpcy5zaG91bGRJbmNsdWRlKGZ1bGxQYXRoLCBpbmNsdWRlKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZnVsbFBhdGgsICd1dGYtOCcpO1xuICAgICAgICAgIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJyk7XG5cbiAgICAgICAgICBsaW5lcy5mb3JFYWNoKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID49IG1heFJlc3VsdHMpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBsaW5lLm1hdGNoKHJlZ2V4KTtcbiAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICByZXN1bHRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGZpbGU6IGZ1bGxQYXRoLFxuICAgICAgICAgICAgICAgIGxpbmU6IGluZGV4ICsgMSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBsaW5lLnRyaW0oKSxcbiAgICAgICAgICAgICAgICBtYXRjaDogbWF0Y2hbMF1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIFNraXAgZmlsZXMgdGhhdCBjYW4ndCBiZSByZWFkIGFzIHRleHRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkSW5jbHVkZShmaWxlUGF0aDogc3RyaW5nLCBpbmNsdWRlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBpZiAoIWluY2x1ZGUpIHtcbiAgICAgIC8vIERlZmF1bHQ6IG9ubHkgdGV4dCBmaWxlc1xuICAgICAgY29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgdGV4dEV4dHMgPSBbXG4gICAgICAgICcudHMnLCAnLnRzeCcsICcuanMnLCAnLmpzeCcsICcuanNvbicsICcubWQnLCAnLnR4dCcsXG4gICAgICAgICcucHknLCAnLmphdmEnLCAnLmMnLCAnLmNwcCcsICcuaCcsICcuZ28nLCAnLnJzJyxcbiAgICAgICAgJy55YW1sJywgJy55bWwnLCAnLnRvbWwnLCAnLmluaScsICcuZW52JywgJy5zaCcsXG4gICAgICAgICcuaHRtbCcsICcuY3NzJywgJy5zY3NzJywgJy5sZXNzJywgJy52dWUnLCAnLnN2ZWx0ZSdcbiAgICAgIF07XG4gICAgICByZXR1cm4gdGV4dEV4dHMuaW5jbHVkZXMoZXh0KSB8fCBleHQgPT09ICcnO1xuICAgIH1cblxuICAgIC8vIFNpbXBsZSBpbmNsdWRlIHBhdHRlcm4gbWF0Y2hpbmdcbiAgICBpZiAoaW5jbHVkZS5zdGFydHNXaXRoKCcqLicpKSB7XG4gICAgICBjb25zdCBleHQgPSBpbmNsdWRlLnNsaWNlKDEpO1xuICAgICAgcmV0dXJuIGZpbGVQYXRoLmVuZHNXaXRoKGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBmaWxlUGF0aC5pbmNsdWRlcyhpbmNsdWRlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,46 @@
1
+ import { BaseTool, ToolExecuteOptions } from './base';
2
+ interface TaskParams {
3
+ description: string;
4
+ prompt: string;
5
+ subagent_type: 'general-purpose' | 'plan-agent' | 'explore-agent' | 'code-reviewer' | 'frontend-tester';
6
+ useContext?: boolean;
7
+ outputFormat?: string;
8
+ constraints?: string;
9
+ }
10
+ export declare class TaskTool extends BaseTool<TaskParams> {
11
+ name: string;
12
+ description: string;
13
+ parameters: {
14
+ type: string;
15
+ properties: {
16
+ description: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ prompt: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ subagent_type: {
25
+ type: string;
26
+ enum: string[];
27
+ description: string;
28
+ };
29
+ useContext: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ outputFormat: {
34
+ type: string;
35
+ description: string;
36
+ };
37
+ constraints: {
38
+ type: string;
39
+ description: string;
40
+ };
41
+ };
42
+ required: string[];
43
+ };
44
+ execute(params: TaskParams, options?: ToolExecuteOptions): Promise<string>;
45
+ }
46
+ export {};
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskTool = void 0;
4
+ const base_1 = require("./base");
5
+ class TaskTool extends base_1.BaseTool {
6
+ name = 'task';
7
+ description = 'Launch a specialized agent to handle complex, multi-step tasks autonomously. Available agents: general-purpose, plan-agent, explore-agent, code-reviewer, frontend-tester';
8
+ parameters = {
9
+ type: 'object',
10
+ properties: {
11
+ description: {
12
+ type: 'string',
13
+ description: 'A short (3-5 word) description of the task'
14
+ },
15
+ prompt: {
16
+ type: 'string',
17
+ description: 'The detailed task description for the agent'
18
+ },
19
+ subagent_type: {
20
+ type: 'string',
21
+ enum: ['general-purpose', 'plan-agent', 'explore-agent', 'code-reviewer', 'frontend-tester'],
22
+ description: 'The type of specialized agent to use'
23
+ },
24
+ useContext: {
25
+ type: 'boolean',
26
+ description: 'Whether to include the main agent context'
27
+ },
28
+ outputFormat: {
29
+ type: 'string',
30
+ description: 'Optional output format template'
31
+ },
32
+ constraints: {
33
+ type: 'string',
34
+ description: 'Optional constraints or limitations'
35
+ }
36
+ },
37
+ required: ['description', 'prompt', 'subagent_type']
38
+ };
39
+ async execute(params, options) {
40
+ this.validateRequired(params, ['description', 'prompt', 'subagent_type']);
41
+ // 返回任务信息,由上层处理
42
+ return JSON.stringify({
43
+ type: 'agent_task',
44
+ description: params.description,
45
+ prompt: params.prompt,
46
+ subagent_type: params.subagent_type,
47
+ useContext: params.useContext,
48
+ outputFormat: params.outputFormat,
49
+ constraints: params.constraints
50
+ });
51
+ }
52
+ }
53
+ exports.TaskTool = TaskTool;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy90YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUF1RTtBQWF2RSxNQUFhLFFBQVMsU0FBUSxlQUFvQjtJQUNoRCxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ2QsV0FBVyxHQUFHLDJLQUEySyxDQUFDO0lBQzFMLFVBQVUsR0FBRztRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFO1lBQ1YsV0FBVyxFQUFFO2dCQUNYLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSw0Q0FBNEM7YUFDMUQ7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLDZDQUE2QzthQUMzRDtZQUNELGFBQWEsRUFBRTtnQkFDYixJQUFJLEVBQUUsUUFBUTtnQkFDZCxJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQztnQkFDNUYsV0FBVyxFQUFFLHNDQUFzQzthQUNwRDtZQUNELFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsU0FBUztnQkFDZixXQUFXLEVBQUUsMkNBQTJDO2FBQ3pEO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxpQ0FBaUM7YUFDL0M7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHFDQUFxQzthQUNuRDtTQUNGO1FBQ0QsUUFBUSxFQUFFLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUM7S0FDckQsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBa0IsRUFBRSxPQUE0QjtRQUM1RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBRTFFLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLFlBQVk7WUFDbEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1lBQy9CLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7WUFDbkMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtZQUNqQyxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7U0FDaEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBakRELDRCQWlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUb29sLCBUb29sRXhlY3V0ZU9wdGlvbnMsIGZvcm1hdFRvb2xFcnJvciB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuXG5pbnRlcmZhY2UgVGFza1BhcmFtcyB7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHByb21wdDogc3RyaW5nO1xuICBzdWJhZ2VudF90eXBlOiAnZ2VuZXJhbC1wdXJwb3NlJyB8ICdwbGFuLWFnZW50JyB8ICdleHBsb3JlLWFnZW50JyB8ICdjb2RlLXJldmlld2VyJyB8ICdmcm9udGVuZC10ZXN0ZXInO1xuICB1c2VDb250ZXh0PzogYm9vbGVhbjtcbiAgb3V0cHV0Rm9ybWF0Pzogc3RyaW5nO1xuICBjb25zdHJhaW50cz86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFRhc2tUb29sIGV4dGVuZHMgQmFzZVRvb2w8VGFza1BhcmFtcz4ge1xuICBuYW1lID0gJ3Rhc2snO1xuICBkZXNjcmlwdGlvbiA9ICdMYXVuY2ggYSBzcGVjaWFsaXplZCBhZ2VudCB0byBoYW5kbGUgY29tcGxleCwgbXVsdGktc3RlcCB0YXNrcyBhdXRvbm9tb3VzbHkuIEF2YWlsYWJsZSBhZ2VudHM6IGdlbmVyYWwtcHVycG9zZSwgcGxhbi1hZ2VudCwgZXhwbG9yZS1hZ2VudCwgY29kZS1yZXZpZXdlciwgZnJvbnRlbmQtdGVzdGVyJztcbiAgcGFyYW1ldGVycyA9IHtcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdBIHNob3J0ICgzLTUgd29yZCkgZGVzY3JpcHRpb24gb2YgdGhlIHRhc2snXG4gICAgICB9LFxuICAgICAgcHJvbXB0OiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBkZXRhaWxlZCB0YXNrIGRlc2NyaXB0aW9uIGZvciB0aGUgYWdlbnQnXG4gICAgICB9LFxuICAgICAgc3ViYWdlbnRfdHlwZToge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZW51bTogWydnZW5lcmFsLXB1cnBvc2UnLCAncGxhbi1hZ2VudCcsICdleHBsb3JlLWFnZW50JywgJ2NvZGUtcmV2aWV3ZXInLCAnZnJvbnRlbmQtdGVzdGVyJ10sXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHR5cGUgb2Ygc3BlY2lhbGl6ZWQgYWdlbnQgdG8gdXNlJ1xuICAgICAgfSxcbiAgICAgIHVzZUNvbnRleHQ6IHtcbiAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdG8gaW5jbHVkZSB0aGUgbWFpbiBhZ2VudCBjb250ZXh0J1xuICAgICAgfSxcbiAgICAgIG91dHB1dEZvcm1hdDoge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdPcHRpb25hbCBvdXRwdXQgZm9ybWF0IHRlbXBsYXRlJ1xuICAgICAgfSxcbiAgICAgIGNvbnN0cmFpbnRzOiB7XG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ09wdGlvbmFsIGNvbnN0cmFpbnRzIG9yIGxpbWl0YXRpb25zJ1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVxdWlyZWQ6IFsnZGVzY3JpcHRpb24nLCAncHJvbXB0JywgJ3N1YmFnZW50X3R5cGUnXVxuICB9O1xuXG4gIGFzeW5jIGV4ZWN1dGUocGFyYW1zOiBUYXNrUGFyYW1zLCBvcHRpb25zPzogVG9vbEV4ZWN1dGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aGlzLnZhbGlkYXRlUmVxdWlyZWQocGFyYW1zLCBbJ2Rlc2NyaXB0aW9uJywgJ3Byb21wdCcsICdzdWJhZ2VudF90eXBlJ10pO1xuXG4gICAgLy8g6L+U5Zue5Lu75Yqh5L+h5oGv77yM55Sx5LiK5bGC5aSE55CGXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHR5cGU6ICdhZ2VudF90YXNrJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBwYXJhbXMuZGVzY3JpcHRpb24sXG4gICAgICBwcm9tcHQ6IHBhcmFtcy5wcm9tcHQsXG4gICAgICBzdWJhZ2VudF90eXBlOiBwYXJhbXMuc3ViYWdlbnRfdHlwZSxcbiAgICAgIHVzZUNvbnRleHQ6IHBhcmFtcy51c2VDb250ZXh0LFxuICAgICAgb3V0cHV0Rm9ybWF0OiBwYXJhbXMub3V0cHV0Rm9ybWF0LFxuICAgICAgY29uc3RyYWludHM6IHBhcmFtcy5jb25zdHJhaW50c1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { BaseTool, ToolExecuteOptions } from './base';
2
+ interface WebFetchParams {
3
+ url: string;
4
+ prompt?: string;
5
+ }
6
+ export declare class WebFetchTool extends BaseTool<WebFetchParams> {
7
+ name: string;
8
+ description: string;
9
+ parameters: {
10
+ type: string;
11
+ properties: {
12
+ url: {
13
+ type: string;
14
+ description: string;
15
+ };
16
+ prompt: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ };
21
+ required: string[];
22
+ };
23
+ execute(params: WebFetchParams, options?: ToolExecuteOptions): Promise<string>;
24
+ private extractTextFromHtml;
25
+ }
26
+ export {};