@push.rocks/smartagent 1.8.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist_ts/00_commitinfo_data.js +3 -3
  2. package/dist_ts/index.d.ts +8 -14
  3. package/dist_ts/index.js +8 -24
  4. package/dist_ts/plugins.d.ts +8 -9
  5. package/dist_ts/plugins.js +10 -12
  6. package/dist_ts/smartagent.classes.agent.d.ts +2 -0
  7. package/dist_ts/smartagent.classes.agent.js +173 -0
  8. package/dist_ts/smartagent.classes.toolregistry.d.ts +7 -70
  9. package/dist_ts/smartagent.classes.toolregistry.js +11 -155
  10. package/dist_ts/smartagent.interfaces.d.ts +47 -283
  11. package/dist_ts/smartagent.interfaces.js +6 -7
  12. package/dist_ts/smartagent.utils.truncation.d.ts +10 -0
  13. package/dist_ts/smartagent.utils.truncation.js +26 -0
  14. package/dist_ts_compaction/index.d.ts +1 -0
  15. package/dist_ts_compaction/index.js +2 -0
  16. package/dist_ts_compaction/plugins.d.ts +4 -0
  17. package/dist_ts_compaction/plugins.js +3 -0
  18. package/dist_ts_compaction/smartagent.compaction.d.ts +10 -0
  19. package/dist_ts_compaction/smartagent.compaction.js +46 -0
  20. package/dist_ts_tools/index.d.ts +8 -0
  21. package/dist_ts_tools/index.js +6 -0
  22. package/dist_ts_tools/plugins.d.ts +15 -0
  23. package/dist_ts_tools/plugins.js +19 -0
  24. package/dist_ts_tools/tool.filesystem.d.ts +6 -0
  25. package/dist_ts_tools/tool.filesystem.js +102 -0
  26. package/dist_ts_tools/tool.http.d.ts +2 -0
  27. package/dist_ts_tools/tool.http.js +65 -0
  28. package/dist_ts_tools/tool.json.d.ts +2 -0
  29. package/dist_ts_tools/tool.json.js +47 -0
  30. package/dist_ts_tools/tool.shell.d.ts +8 -0
  31. package/dist_ts_tools/tool.shell.js +40 -0
  32. package/npmextra.json +1 -1
  33. package/package.json +30 -18
  34. package/readme.hints.md +38 -84
  35. package/readme.md +254 -682
  36. package/ts/00_commitinfo_data.ts +2 -2
  37. package/ts/index.ts +10 -37
  38. package/ts/plugins.ts +22 -21
  39. package/ts/smartagent.classes.agent.ts +198 -0
  40. package/ts/smartagent.classes.toolregistry.ts +11 -179
  41. package/ts/smartagent.interfaces.ts +51 -363
  42. package/ts/smartagent.utils.truncation.ts +39 -0
  43. package/ts_compaction/index.ts +1 -0
  44. package/ts_compaction/plugins.ts +6 -0
  45. package/ts_compaction/smartagent.compaction.ts +51 -0
  46. package/ts_tools/index.ts +8 -0
  47. package/ts_tools/plugins.ts +30 -0
  48. package/ts_tools/tool.filesystem.ts +131 -0
  49. package/ts_tools/tool.http.ts +78 -0
  50. package/ts_tools/tool.json.ts +53 -0
  51. package/ts_tools/tool.shell.ts +62 -0
  52. package/dist_ts/smartagent.classes.driveragent.d.ts +0 -134
  53. package/dist_ts/smartagent.classes.driveragent.js +0 -671
  54. package/dist_ts/smartagent.classes.dualagent.d.ts +0 -93
  55. package/dist_ts/smartagent.classes.dualagent.js +0 -614
  56. package/dist_ts/smartagent.classes.guardianagent.d.ts +0 -46
  57. package/dist_ts/smartagent.classes.guardianagent.js +0 -201
  58. package/dist_ts/smartagent.tools.base.d.ts +0 -52
  59. package/dist_ts/smartagent.tools.base.js +0 -42
  60. package/dist_ts/smartagent.tools.browser.d.ts +0 -17
  61. package/dist_ts/smartagent.tools.browser.js +0 -229
  62. package/dist_ts/smartagent.tools.deno.d.ts +0 -21
  63. package/dist_ts/smartagent.tools.deno.js +0 -191
  64. package/dist_ts/smartagent.tools.expert.d.ts +0 -27
  65. package/dist_ts/smartagent.tools.expert.js +0 -126
  66. package/dist_ts/smartagent.tools.filesystem.d.ts +0 -40
  67. package/dist_ts/smartagent.tools.filesystem.js +0 -801
  68. package/dist_ts/smartagent.tools.http.d.ts +0 -16
  69. package/dist_ts/smartagent.tools.http.js +0 -264
  70. package/dist_ts/smartagent.tools.json.d.ts +0 -24
  71. package/dist_ts/smartagent.tools.json.js +0 -202
  72. package/dist_ts/smartagent.tools.search.d.ts +0 -29
  73. package/dist_ts/smartagent.tools.search.js +0 -215
  74. package/dist_ts/smartagent.tools.shell.d.ts +0 -17
  75. package/dist_ts/smartagent.tools.shell.js +0 -202
  76. package/ts/smartagent.classes.driveragent.ts +0 -775
  77. package/ts/smartagent.classes.dualagent.ts +0 -692
  78. package/ts/smartagent.classes.guardianagent.ts +0 -241
  79. package/ts/smartagent.tools.base.ts +0 -83
  80. package/ts/smartagent.tools.browser.ts +0 -253
  81. package/ts/smartagent.tools.deno.ts +0 -230
  82. package/ts/smartagent.tools.expert.ts +0 -144
  83. package/ts/smartagent.tools.filesystem.ts +0 -885
  84. package/ts/smartagent.tools.http.ts +0 -283
  85. package/ts/smartagent.tools.json.ts +0 -224
  86. package/ts/smartagent.tools.search.ts +0 -237
  87. package/ts/smartagent.tools.shell.ts +0 -230
@@ -1,191 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import * as interfaces from './smartagent.interfaces.js';
3
- import { BaseToolWrapper } from './smartagent.tools.base.js';
4
- /**
5
- * Deno tool for executing TypeScript/JavaScript code in a sandboxed environment
6
- * Wraps @push.rocks/smartdeno
7
- */
8
- export class DenoTool extends BaseToolWrapper {
9
- name = 'deno';
10
- description = 'Execute TypeScript/JavaScript code in a sandboxed Deno environment with fine-grained permission control';
11
- actions = [
12
- {
13
- name: 'execute',
14
- description: 'Execute TypeScript/JavaScript code and return stdout/stderr. Code runs in Deno sandbox with specified permissions.',
15
- parameters: {
16
- type: 'object',
17
- properties: {
18
- code: {
19
- type: 'string',
20
- description: 'TypeScript/JavaScript code to execute',
21
- },
22
- permissions: {
23
- type: 'array',
24
- items: {
25
- type: 'string',
26
- enum: ['all', 'env', 'ffi', 'hrtime', 'net', 'read', 'run', 'sys', 'write'],
27
- },
28
- description: 'Deno permissions to grant. Default: none (fully sandboxed). Options: all, env, net, read, write, run, sys, ffi, hrtime',
29
- },
30
- },
31
- required: ['code'],
32
- },
33
- },
34
- {
35
- name: 'executeWithResult',
36
- description: 'Execute code that outputs JSON on the last line of stdout. The JSON is parsed and returned as the result.',
37
- parameters: {
38
- type: 'object',
39
- properties: {
40
- code: {
41
- type: 'string',
42
- description: 'Code that console.logs a JSON value on the final line. This JSON will be parsed and returned.',
43
- },
44
- permissions: {
45
- type: 'array',
46
- items: {
47
- type: 'string',
48
- enum: ['all', 'env', 'ffi', 'hrtime', 'net', 'read', 'run', 'sys', 'write'],
49
- },
50
- description: 'Deno permissions to grant',
51
- },
52
- },
53
- required: ['code'],
54
- },
55
- },
56
- ];
57
- smartdeno;
58
- async initialize() {
59
- this.smartdeno = new plugins.smartdeno.SmartDeno();
60
- await this.smartdeno.start();
61
- this.isInitialized = true;
62
- }
63
- async cleanup() {
64
- if (this.smartdeno) {
65
- await this.smartdeno.stop();
66
- }
67
- this.isInitialized = false;
68
- }
69
- async execute(action, params) {
70
- this.validateAction(action);
71
- this.ensureInitialized();
72
- try {
73
- const code = params.code;
74
- const permissions = params.permissions || [];
75
- // Execute the script
76
- const result = await this.smartdeno.executeScript(code, {
77
- permissions,
78
- });
79
- switch (action) {
80
- case 'execute': {
81
- return {
82
- success: result.exitCode === 0,
83
- result: {
84
- exitCode: result.exitCode,
85
- stdout: result.stdout,
86
- stderr: result.stderr,
87
- permissions,
88
- },
89
- };
90
- }
91
- case 'executeWithResult': {
92
- if (result.exitCode !== 0) {
93
- return {
94
- success: false,
95
- error: `Script failed with exit code ${result.exitCode}: ${result.stderr}`,
96
- };
97
- }
98
- // Parse the last line of stdout as JSON
99
- const lines = result.stdout.trim().split('\n');
100
- const lastLine = lines[lines.length - 1];
101
- try {
102
- const parsedResult = JSON.parse(lastLine);
103
- return {
104
- success: true,
105
- result: {
106
- parsed: parsedResult,
107
- stdout: result.stdout,
108
- stderr: result.stderr,
109
- },
110
- };
111
- }
112
- catch (parseError) {
113
- return {
114
- success: false,
115
- error: `Failed to parse JSON from last line of output: ${lastLine}`,
116
- };
117
- }
118
- }
119
- default:
120
- return {
121
- success: false,
122
- error: `Unknown action: ${action}`,
123
- };
124
- }
125
- }
126
- catch (error) {
127
- return {
128
- success: false,
129
- error: error instanceof Error ? error.message : String(error),
130
- };
131
- }
132
- }
133
- getToolExplanation() {
134
- return `## Tool: deno
135
- Execute TypeScript/JavaScript code in a sandboxed Deno environment with fine-grained permission control.
136
-
137
- ### Actions:
138
-
139
- **execute** - Execute TypeScript/JavaScript code and return stdout/stderr
140
- Parameters:
141
- - code (required): TypeScript/JavaScript code to execute
142
- - permissions (optional): Array of Deno permissions to grant. Options: "all", "env", "net", "read", "write", "run", "sys", "ffi", "hrtime". Default: none (fully sandboxed)
143
-
144
- Example - Simple execution:
145
- <tool_call>
146
- <tool>deno</tool>
147
- <action>execute</action>
148
- <params>{"code": "console.log('Hello from Deno!');"}</params>
149
- </tool_call>
150
-
151
- Example - With network permission:
152
- <tool_call>
153
- <tool>deno</tool>
154
- <action>execute</action>
155
- <params>{"code": "const resp = await fetch('https://api.example.com/data');\\nconsole.log(await resp.text());", "permissions": ["net"]}</params>
156
- </tool_call>
157
-
158
- **executeWithResult** - Execute code that outputs JSON on the last line of stdout
159
- Parameters:
160
- - code (required): Code that console.logs a JSON value on the final line
161
- - permissions (optional): Array of Deno permissions to grant
162
-
163
- Example:
164
- <tool_call>
165
- <tool>deno</tool>
166
- <action>executeWithResult</action>
167
- <params>{"code": "const result = { sum: 1 + 2, product: 2 * 3 };\\nconsole.log(JSON.stringify(result));"}</params>
168
- </tool_call>
169
- `;
170
- }
171
- getCallSummary(action, params) {
172
- const code = params.code;
173
- const permissions = params.permissions || [];
174
- // Create a preview of the code (first 100 chars)
175
- const codePreview = code.length > 100 ? code.substring(0, 100) + '...' : code;
176
- // Escape newlines for single-line display
177
- const cleanPreview = codePreview.replace(/\n/g, '\\n');
178
- const permissionInfo = permissions.length > 0
179
- ? ` [permissions: ${permissions.join(', ')}]`
180
- : ' [sandboxed - no permissions]';
181
- switch (action) {
182
- case 'execute':
183
- return `Execute Deno code${permissionInfo}: "${cleanPreview}"`;
184
- case 'executeWithResult':
185
- return `Execute Deno code and parse JSON result${permissionInfo}: "${cleanPreview}"`;
186
- default:
187
- return `Unknown action: ${action}`;
188
- }
189
- }
190
- }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5kZW5vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhZ2VudC50b29scy5kZW5vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBZ0I3RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sUUFBUyxTQUFRLGVBQWU7SUFDcEMsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNkLFdBQVcsR0FDaEIseUdBQXlHLENBQUM7SUFFckcsT0FBTyxHQUE2QjtRQUN6QztZQUNFLElBQUksRUFBRSxTQUFTO1lBQ2YsV0FBVyxFQUNULG9IQUFvSDtZQUN0SCxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRTt3QkFDSixJQUFJLEVBQUUsUUFBUTt3QkFDZCxXQUFXLEVBQUUsdUNBQXVDO3FCQUNyRDtvQkFDRCxXQUFXLEVBQUU7d0JBQ1gsSUFBSSxFQUFFLE9BQU87d0JBQ2IsS0FBSyxFQUFFOzRCQUNMLElBQUksRUFBRSxRQUFROzRCQUNkLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO3lCQUM1RTt3QkFDRCxXQUFXLEVBQ1Qsd0hBQXdIO3FCQUMzSDtpQkFDRjtnQkFDRCxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDbkI7U0FDRjtRQUNEO1lBQ0UsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixXQUFXLEVBQ1QsMkdBQTJHO1lBQzdHLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsUUFBUTtnQkFDZCxVQUFVLEVB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
@@ -1,27 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import * as interfaces from './smartagent.interfaces.js';
3
- import { BaseToolWrapper } from './smartagent.tools.base.js';
4
- /**
5
- * ExpertTool - A specialized agent wrapped as a tool
6
- *
7
- * Enables hierarchical agent architectures where the Driver can delegate
8
- * complex tasks to specialized experts with their own tools and policies.
9
- */
10
- export declare class ExpertTool extends BaseToolWrapper {
11
- name: string;
12
- description: string;
13
- actions: interfaces.IToolAction[];
14
- private config;
15
- private smartAi;
16
- private inner?;
17
- constructor(config: interfaces.IExpertConfig, smartAi: plugins.smartai.SmartAi);
18
- initialize(): Promise<void>;
19
- cleanup(): Promise<void>;
20
- execute(action: string, params: Record<string, unknown>): Promise<interfaces.IToolExecutionResult>;
21
- getCallSummary(action: string, params: Record<string, unknown>): string;
22
- getToolExplanation(): string;
23
- /**
24
- * Get the expert's configuration
25
- */
26
- getConfig(): interfaces.IExpertConfig;
27
- }
@@ -1,126 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import * as interfaces from './smartagent.interfaces.js';
3
- import { BaseToolWrapper } from './smartagent.tools.base.js';
4
- // Forward declaration to avoid circular import at module load time
5
- // The actual import happens lazily in initialize()
6
- let DualAgentOrchestrator;
7
- /**
8
- * ExpertTool - A specialized agent wrapped as a tool
9
- *
10
- * Enables hierarchical agent architectures where the Driver can delegate
11
- * complex tasks to specialized experts with their own tools and policies.
12
- */
13
- export class ExpertTool extends BaseToolWrapper {
14
- name;
15
- description;
16
- actions = [
17
- {
18
- name: 'consult',
19
- description: 'Delegate a task or question to this expert',
20
- parameters: {
21
- type: 'object',
22
- properties: {
23
- task: { type: 'string', description: 'The task or question for the expert' },
24
- context: { type: 'string', description: 'Additional context to help the expert' },
25
- },
26
- required: ['task'],
27
- },
28
- },
29
- ];
30
- config;
31
- smartAi;
32
- inner;
33
- constructor(config, smartAi) {
34
- super();
35
- this.config = config;
36
- this.smartAi = smartAi;
37
- this.name = config.name;
38
- this.description = config.description;
39
- }
40
- async initialize() {
41
- // Lazy import to avoid circular dependency
42
- if (!DualAgentOrchestrator) {
43
- const module = await import('./smartagent.classes.dualagent.js');
44
- DualAgentOrchestrator = module.DualAgentOrchestrator;
45
- }
46
- this.inner = new DualAgentOrchestrator({
47
- smartAiInstance: this.smartAi, // Share SmartAi instance
48
- defaultProvider: this.config.provider,
49
- driverSystemMessage: this.config.systemMessage,
50
- guardianPolicyPrompt: this.config.guardianPolicy,
51
- maxIterations: this.config.maxIterations ?? 10,
52
- });
53
- // Register expert's tools
54
- if (this.config.tools) {
55
- for (const tool of this.config.tools) {
56
- // Tools in the config are IAgentToolWrapper, but we need BaseToolWrapper
57
- // Since all our tools extend BaseToolWrapper, this cast is safe
58
- this.inner.registerTool(tool);
59
- }
60
- }
61
- await this.inner.start();
62
- this.isInitialized = true;
63
- }
64
- async cleanup() {
65
- if (this.inner) {
66
- await this.inner.stop();
67
- this.inner = undefined;
68
- }
69
- this.isInitialized = false;
70
- }
71
- async execute(action, params) {
72
- this.validateAction(action);
73
- this.ensureInitialized();
74
- const task = params.task;
75
- const context = params.context;
76
- const fullTask = context ? `Context: ${context}\n\nTask: ${task}` : task;
77
- try {
78
- const result = await this.inner.run(fullTask);
79
- return {
80
- success: result.success,
81
- result: {
82
- response: result.result,
83
- iterations: result.iterations,
84
- status: result.status,
85
- },
86
- summary: result.success
87
- ? `Expert "${this.name}" completed (${result.iterations} iterations)`
88
- : `Expert "${this.name}" failed: ${result.status}`,
89
- };
90
- }
91
- catch (error) {
92
- return {
93
- success: false,
94
- error: `Expert error: ${error instanceof Error ? error.message : String(error)}`,
95
- };
96
- }
97
- }
98
- getCallSummary(action, params) {
99
- const task = params.task;
100
- const preview = task.length > 60 ? task.substring(0, 60) + '...' : task;
101
- return `Consult ${this.name}: "${preview}"`;
102
- }
103
- getToolExplanation() {
104
- return `## Expert: ${this.name}
105
- ${this.description}
106
-
107
- ### Usage:
108
- Delegate tasks to this expert when you need specialized help.
109
-
110
- \`\`\`
111
- <tool_call>
112
- <tool>${this.name}</tool>
113
- <action>consult</action>
114
- <params>{"task": "Your question or task", "context": "Optional background"}</params>
115
- </tool_call>
116
- \`\`\`
117
- `;
118
- }
119
- /**
120
- * Get the expert's configuration
121
- */
122
- getConfig() {
123
- return this.config;
124
- }
125
- }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5leHBlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFnZW50LnRvb2xzLmV4cGVydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssVUFBVSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RCxtRUFBbUU7QUFDbkUsbURBQW1EO0FBQ25ELElBQUkscUJBQStGLENBQUM7QUFFcEc7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sVUFBVyxTQUFRLGVBQWU7SUFDdEMsSUFBSSxDQUFTO0lBQ2IsV0FBVyxDQUFTO0lBQ3BCLE9BQU8sR0FBNkI7UUFDekM7WUFDRSxJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFBRSw0Q0FBNEM7WUFDekQsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxxQ0FBcUMsRUFBRTtvQkFDNUUsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsdUNBQXVDLEVBQUU7aUJBQ2xGO2dCQUNELFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNuQjtTQUNGO0tBQ0YsQ0FBQztJQUVNLE1BQU0sQ0FBMkI7SUFDakMsT0FBTyxDQUEwQjtJQUNqQyxLQUFLLENBQThDO0lBRTNELFlBQVksTUFBZ0MsRUFBRSxPQUFnQztRQUM1RSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4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
@@ -1,40 +0,0 @@
1
- import * as interfaces from './smartagent.interfaces.js';
2
- import { BaseToolWrapper } from './smartagent.tools.base.js';
3
- /**
4
- * Options for FilesystemTool
5
- */
6
- export interface IFilesystemToolOptions {
7
- /** Base path to scope all operations to. If set, all paths must be within this directory. */
8
- basePath?: string;
9
- /** Glob patterns to exclude from listings (e.g., ['.nogit/**', 'node_modules/**']) */
10
- excludePatterns?: string[];
11
- }
12
- /**
13
- * Filesystem tool for file and directory operations
14
- * Wraps @push.rocks/smartfs
15
- */
16
- export declare class FilesystemTool extends BaseToolWrapper {
17
- name: string;
18
- description: string;
19
- /** Base path to scope all operations to */
20
- private basePath?;
21
- /** Glob patterns to exclude from listings */
22
- private excludePatterns;
23
- constructor(options?: IFilesystemToolOptions);
24
- /**
25
- * Check if a relative path should be excluded based on exclude patterns
26
- */
27
- private isExcluded;
28
- /**
29
- * Validate that a path is within the allowed base path
30
- * @throws Error if path is outside allowed directory
31
- */
32
- private validatePath;
33
- actions: interfaces.IToolAction[];
34
- private smartfs;
35
- initialize(): Promise<void>;
36
- cleanup(): Promise<void>;
37
- execute(action: string, params: Record<string, unknown>): Promise<interfaces.IToolExecutionResult>;
38
- getToolExplanation(): string;
39
- getCallSummary(action: string, params: Record<string, unknown>): string;
40
- }