@push.rocks/smartagent 1.7.0 → 3.0.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 (81) hide show
  1. package/dist_ts/00_commitinfo_data.js +3 -3
  2. package/dist_ts/index.d.ts +9 -12
  3. package/dist_ts/index.js +9 -20
  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 +12 -0
  9. package/dist_ts/smartagent.classes.toolregistry.js +17 -0
  10. package/dist_ts/smartagent.interfaces.d.ts +47 -231
  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 +43 -42
  35. package/readme.md +257 -526
  36. package/ts/00_commitinfo_data.ts +2 -2
  37. package/ts/index.ts +11 -31
  38. package/ts/plugins.ts +22 -21
  39. package/ts/smartagent.classes.agent.ts +198 -0
  40. package/ts/smartagent.classes.toolregistry.ts +20 -0
  41. package/ts/smartagent.interfaces.ts +51 -303
  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 -79
  55. package/dist_ts/smartagent.classes.dualagent.js +0 -583
  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.filesystem.d.ts +0 -40
  65. package/dist_ts/smartagent.tools.filesystem.js +0 -801
  66. package/dist_ts/smartagent.tools.http.d.ts +0 -16
  67. package/dist_ts/smartagent.tools.http.js +0 -264
  68. package/dist_ts/smartagent.tools.json.d.ts +0 -24
  69. package/dist_ts/smartagent.tools.json.js +0 -202
  70. package/dist_ts/smartagent.tools.shell.d.ts +0 -17
  71. package/dist_ts/smartagent.tools.shell.js +0 -202
  72. package/ts/smartagent.classes.driveragent.ts +0 -775
  73. package/ts/smartagent.classes.dualagent.ts +0 -657
  74. package/ts/smartagent.classes.guardianagent.ts +0 -241
  75. package/ts/smartagent.tools.base.ts +0 -83
  76. package/ts/smartagent.tools.browser.ts +0 -253
  77. package/ts/smartagent.tools.deno.ts +0 -230
  78. package/ts/smartagent.tools.filesystem.ts +0 -885
  79. package/ts/smartagent.tools.http.ts +0 -283
  80. package/ts/smartagent.tools.json.ts +0 -224
  81. package/ts/smartagent.tools.shell.ts +0 -230
@@ -1,202 +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
- * Shell tool for executing commands securely
6
- * Wraps @push.rocks/smartshell with execSpawn for safety (no shell injection)
7
- */
8
- export class ShellTool extends BaseToolWrapper {
9
- name = 'shell';
10
- description = 'Execute shell commands securely. Uses execSpawn (shell:false) to prevent command injection.';
11
- actions = [
12
- {
13
- name: 'execute',
14
- description: 'Execute a command with arguments (secure, no shell injection possible). Command and args are passed separately.',
15
- parameters: {
16
- type: 'object',
17
- properties: {
18
- command: {
19
- type: 'string',
20
- description: 'The command to execute (e.g., "ls", "cat", "grep", "node")',
21
- },
22
- args: {
23
- type: 'array',
24
- items: { type: 'string' },
25
- description: 'Array of arguments (each argument is properly escaped)',
26
- },
27
- cwd: { type: 'string', description: 'Working directory for the command' },
28
- timeout: { type: 'number', description: 'Timeout in milliseconds' },
29
- env: {
30
- type: 'object',
31
- description: 'Additional environment variables (key-value pairs)',
32
- },
33
- },
34
- required: ['command'],
35
- },
36
- },
37
- {
38
- name: 'which',
39
- description: 'Check if a command exists and get its path',
40
- parameters: {
41
- type: 'object',
42
- properties: {
43
- command: { type: 'string', description: 'Command name to look up (e.g., "node", "git")' },
44
- },
45
- required: ['command'],
46
- },
47
- },
48
- ];
49
- smartshell;
50
- async initialize() {
51
- this.smartshell = new plugins.smartshell.Smartshell({
52
- executor: 'bash',
53
- });
54
- this.isInitialized = true;
55
- }
56
- async cleanup() {
57
- this.isInitialized = false;
58
- }
59
- async execute(action, params) {
60
- this.validateAction(action);
61
- this.ensureInitialized();
62
- try {
63
- switch (action) {
64
- case 'execute': {
65
- const command = params.command;
66
- const args = params.args || [];
67
- // Build options
68
- const options = {};
69
- if (params.timeout) {
70
- options.timeout = params.timeout;
71
- }
72
- if (params.env) {
73
- options.env = {
74
- ...process.env,
75
- ...params.env,
76
- };
77
- }
78
- // Use execSpawn for security - no shell injection possible
79
- const result = await this.smartshell.execSpawn(command, args, options);
80
- return {
81
- success: result.exitCode === 0,
82
- result: {
83
- command,
84
- args,
85
- exitCode: result.exitCode,
86
- stdout: result.stdout,
87
- stderr: result.stderr,
88
- signal: result.signal,
89
- },
90
- };
91
- }
92
- case 'which': {
93
- try {
94
- const commandPath = await plugins.smartshell.which(params.command);
95
- return {
96
- success: true,
97
- result: {
98
- command: params.command,
99
- path: commandPath,
100
- exists: true,
101
- },
102
- };
103
- }
104
- catch {
105
- return {
106
- success: true,
107
- result: {
108
- command: params.command,
109
- path: null,
110
- exists: false,
111
- },
112
- };
113
- }
114
- }
115
- default:
116
- return {
117
- success: false,
118
- error: `Unknown action: ${action}`,
119
- };
120
- }
121
- }
122
- catch (error) {
123
- return {
124
- success: false,
125
- error: error instanceof Error ? error.message : String(error),
126
- };
127
- }
128
- }
129
- getToolExplanation() {
130
- return `## Tool: shell
131
- Execute shell commands securely. Uses execSpawn (shell:false) to prevent command injection.
132
-
133
- ### Actions:
134
-
135
- **execute** - Execute a command with arguments (secure, no shell injection possible)
136
- Parameters:
137
- - command (required): The command to execute (e.g., "ls", "cat", "grep", "node")
138
- - args (optional): Array of arguments (each argument is properly escaped)
139
- - cwd (optional): Working directory for the command
140
- - timeout (optional): Timeout in milliseconds
141
- - env (optional): Additional environment variables (key-value object)
142
-
143
- Example - List files:
144
- <tool_call>
145
- <tool>shell</tool>
146
- <action>execute</action>
147
- <params>{"command": "ls", "args": ["-la", "/path/to/dir"]}</params>
148
- </tool_call>
149
-
150
- Example - Run Node script:
151
- <tool_call>
152
- <tool>shell</tool>
153
- <action>execute</action>
154
- <params>{"command": "node", "args": ["script.js"], "cwd": "/path/to/project"}</params>
155
- </tool_call>
156
-
157
- Example - Search in files:
158
- <tool_call>
159
- <tool>shell</tool>
160
- <action>execute</action>
161
- <params>{"command": "grep", "args": ["-r", "pattern", "src/"]}</params>
162
- </tool_call>
163
-
164
- **which** - Check if a command exists and get its path
165
- Parameters:
166
- - command (required): Command name to look up (e.g., "node", "git")
167
-
168
- Example:
169
- <tool_call>
170
- <tool>shell</tool>
171
- <action>which</action>
172
- <params>{"command": "node"}</params>
173
- </tool_call>
174
- `;
175
- }
176
- getCallSummary(action, params) {
177
- switch (action) {
178
- case 'execute': {
179
- const command = params.command;
180
- const args = params.args || [];
181
- const fullCommand = [command, ...args].join(' ');
182
- let summary = `Execute: ${fullCommand}`;
183
- if (params.cwd) {
184
- summary += ` (in ${params.cwd})`;
185
- }
186
- if (params.timeout) {
187
- summary += ` [timeout: ${params.timeout}ms]`;
188
- }
189
- if (params.env && Object.keys(params.env).length > 0) {
190
- const envKeys = Object.keys(params.env).join(', ');
191
- summary += ` [env: ${envKeys}]`;
192
- }
193
- return summary;
194
- }
195
- case 'which':
196
- return `Check if command "${params.command}" exists and get its path`;
197
- default:
198
- return `Unknown action: ${action}`;
199
- }
200
- }
201
- }
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5zaGVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0YWdlbnQudG9vbHMuc2hlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLFVBQVUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFN0Q7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxlQUFlO0lBQ3JDLElBQUksR0FBRyxPQUFPLENBQUM7SUFDZixXQUFXLEdBQ2hCLDZGQUE2RixDQUFDO0lBRXpGLE9BQU8sR0FBNkI7UUFDekM7WUFDRSxJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFDVCxpSEFBaUg7WUFDbkgsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUU7d0JBQ1AsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDREQUE0RDtxQkFDMUU7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxPQUFPO3dCQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLFdBQVcsRUFBRSx3REFBd0Q7cUJBQ3RFO29CQUNELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFO29CQUN6RSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsRUFBRTtvQkFDbkUsR0FBRyxFQUFFO3dCQUNILElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxvREFBb0Q7cUJBQ2xFO2lCQUNGO2dCQUNELFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUN0QjtTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVB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