@push.rocks/smartagent 1.3.0 → 1.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.
@@ -165,6 +165,83 @@ export class HttpTool extends BaseToolWrapper {
165
165
  };
166
166
  }
167
167
  }
168
+ getToolExplanation() {
169
+ return `## Tool: http
170
+ Make HTTP requests to web APIs and services.
171
+
172
+ ### Actions:
173
+
174
+ **get** - Make a GET request
175
+ Parameters:
176
+ - url (required): URL to request
177
+ - headers (optional): Request headers (key-value object)
178
+ - query (optional): Query parameters (key-value object)
179
+ - timeout (optional): Timeout in milliseconds
180
+
181
+ Example:
182
+ <tool_call>
183
+ <tool>http</tool>
184
+ <action>get</action>
185
+ <params>{"url": "https://api.example.com/data", "headers": {"Authorization": "Bearer token123"}}</params>
186
+ </tool_call>
187
+
188
+ **post** - Make a POST request with JSON body
189
+ Parameters:
190
+ - url (required): URL to request
191
+ - body (optional): JSON body to send
192
+ - headers (optional): Request headers (key-value object)
193
+ - query (optional): Query parameters (key-value object)
194
+ - timeout (optional): Timeout in milliseconds
195
+
196
+ Example:
197
+ <tool_call>
198
+ <tool>http</tool>
199
+ <action>post</action>
200
+ <params>{"url": "https://api.example.com/submit", "body": {"name": "test", "value": 123}}</params>
201
+ </tool_call>
202
+
203
+ **put** - Make a PUT request with JSON body
204
+ Parameters:
205
+ - url (required): URL to request
206
+ - body (required): JSON body to send
207
+ - headers (optional): Request headers (key-value object)
208
+ - timeout (optional): Timeout in milliseconds
209
+
210
+ Example:
211
+ <tool_call>
212
+ <tool>http</tool>
213
+ <action>put</action>
214
+ <params>{"url": "https://api.example.com/resource/1", "body": {"name": "updated"}}</params>
215
+ </tool_call>
216
+
217
+ **patch** - Make a PATCH request with JSON body
218
+ Parameters:
219
+ - url (required): URL to request
220
+ - body (required): JSON body to send
221
+ - headers (optional): Request headers (key-value object)
222
+ - timeout (optional): Timeout in milliseconds
223
+
224
+ Example:
225
+ <tool_call>
226
+ <tool>http</tool>
227
+ <action>patch</action>
228
+ <params>{"url": "https://api.example.com/resource/1", "body": {"status": "active"}}</params>
229
+ </tool_call>
230
+
231
+ **delete** - Make a DELETE request
232
+ Parameters:
233
+ - url (required): URL to request
234
+ - headers (optional): Request headers (key-value object)
235
+ - timeout (optional): Timeout in milliseconds
236
+
237
+ Example:
238
+ <tool_call>
239
+ <tool>http</tool>
240
+ <action>delete</action>
241
+ <params>{"url": "https://api.example.com/resource/1"}</params>
242
+ </tool_call>
243
+ `;
244
+ }
168
245
  getCallSummary(action, params) {
169
246
  const method = action.toUpperCase();
170
247
  let summary = `${method} request to "${params.url}"`;
@@ -184,4 +261,4 @@ export class HttpTool extends BaseToolWrapper {
184
261
  return summary;
185
262
  }
186
263
  }
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5odHRwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhZ2VudC50b29scy5odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsZUFBZTtJQUNwQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ2QsV0FBVyxHQUFHLDZDQUE2QyxDQUFDO0lBRTVELE9BQU8sR0FBNkI7UUFDekM7WUFDRSxJQUFJLEVBQUUsS0FBSztZQUNYLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRTtvQkFDdEQsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsbUNBQW1DLEVBQUU7b0JBQzdFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLG9DQUFvQyxFQUFFO29CQUM1RSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsRUFBRTtpQkFDcEU7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ2xCO1NBQ0Y7UUFDRDtZQUNFLElBQUksRUFBRSxNQUFNO1lBQ1osV0FBVyxFQUFFLG9DQUFvQztZQUNqRCxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFR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
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5odHRwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhZ2VudC50b29scy5odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsZUFBZTtJQUNwQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ2QsV0FBVyxHQUFHLDZDQUE2QyxDQUFDO0lBRTVELE9BQU8sR0FBNkI7UUFDekM7WUFDRSxJQUFJLEVBQUUsS0FBSztZQUNYLFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRTtvQkFDdEQsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsbUNBQW1DLEVBQUU7b0JBQzdFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLG9DQUFvQyxFQUFFO29CQUM1RSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsRUFBRTtpQkFDcEU7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ2xCO1NBQ0Y7UUFDRDtZQUNFLElBQUksRUFBRSxNQUFNO1lBQ1osV0FBVyxFQUFFLG9DQUFvQztZQUNqRCxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFR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
@@ -19,5 +19,6 @@ export declare class JsonValidatorTool extends BaseToolWrapper {
19
19
  * Format/pretty-print JSON string
20
20
  */
21
21
  private formatJson;
22
+ getToolExplanation(): string;
22
23
  getCallSummary(action: string, params: Record<string, unknown>): string;
23
24
  }
@@ -154,6 +154,36 @@ export class JsonValidatorTool extends BaseToolWrapper {
154
154
  };
155
155
  }
156
156
  }
157
+ getToolExplanation() {
158
+ return `## Tool: json
159
+ Validate and format JSON data. Use this to verify your JSON output is valid before completing a task.
160
+
161
+ ### Actions:
162
+
163
+ **validate** - Validate that a string is valid JSON and optionally check required fields
164
+ Parameters:
165
+ - jsonString (required): The JSON string to validate
166
+ - requiredFields (optional): Array of field names that must be present
167
+
168
+ Example:
169
+ <tool_call>
170
+ <tool>json</tool>
171
+ <action>validate</action>
172
+ <params>{"jsonString": "{\\"invoice_number\\":\\"INV-001\\",\\"total\\":99.99}", "requiredFields": ["invoice_number", "total"]}</params>
173
+ </tool_call>
174
+
175
+ **format** - Parse and pretty-print JSON string
176
+ Parameters:
177
+ - jsonString (required): The JSON string to format
178
+
179
+ Example:
180
+ <tool_call>
181
+ <tool>json</tool>
182
+ <action>format</action>
183
+ <params>{"jsonString": "{\\"name\\":\\"test\\",\\"value\\":123}"}</params>
184
+ </tool_call>
185
+ `;
186
+ }
157
187
  getCallSummary(action, params) {
158
188
  const jsonStr = params.jsonString || '';
159
189
  const preview = jsonStr.length > 50 ? jsonStr.substring(0, 50) + '...' : jsonStr;
@@ -169,4 +199,4 @@ export class JsonValidatorTool extends BaseToolWrapper {
169
199
  }
170
200
  }
171
201
  }
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5qc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhZ2VudC50b29scy5qc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBQzdDLElBQUksR0FBRyxNQUFNLENBQUM7SUFDZCxXQUFXLEdBQUcsdUdBQXVHLENBQUM7SUFFdEgsT0FBTyxHQUE2QjtRQUN6QztZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLFdBQVcsRUFBRSwyRUFBMkU7WUFDeEYsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDZCQUE2QjtxQkFDM0M7b0JBQ0QsY0FBYyxFQUFFO3dCQUNkLElBQUksRUFBRSxPQUFPO3dCQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLFdBQVcsRUFBRSxxRUFBcUU7cUJBQ25GO2lCQUNGO2dCQUNELFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN6QjtTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFBRSxvQ0FBb0M7WUFDakQsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDJCQUEyQjtxQkFDekM7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3pCO1NBQ0Y7S0FDRixDQUFDO0lBRUYsS0FBSyxDQUFDLFVBQVU7UUFD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
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5qc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhZ2VudC50b29scy5qc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBQzdDLElBQUksR0FBRyxNQUFNLENBQUM7SUFDZCxXQUFXLEdBQUcsdUdBQXVHLENBQUM7SUFFdEgsT0FBTyxHQUE2QjtRQUN6QztZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLFdBQVcsRUFBRSwyRUFBMkU7WUFDeEYsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDZCQUE2QjtxQkFDM0M7b0JBQ0QsY0FBYyxFQUFFO3dCQUNkLElBQUksRUFBRSxPQUFPO3dCQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLFdBQVcsRUFBRSxxRUFBcUU7cUJBQ25GO2lCQUNGO2dCQUNELFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN6QjtTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsUUFBUTtZQUNkLFdBQVcsRUFBRSxvQ0FBb0M7WUFDakQsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixVQUFVLEVBQUU7d0JBQ1YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDJCQUEyQjtxQkFDekM7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDO2FBQ3pCO1NBQ0Y7S0FDRixDQUFDO0lBRUYsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FDWCxNQUFjLEVBQ2QsTUFBK0I7UUFFL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU1QixRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxVQUFVO2dCQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDO2dCQUNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWSxDQUFDLE1BQStCO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFvQixDQUFDO1FBQy9DLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFzQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEQsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsdURBQXVEO2FBQy9ELENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUV0QyxxQ0FBcUM7WUFDckMsSUFBSSxjQUFjLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ3BELElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQzt3QkFDbEQsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztvQkFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsT0FBTzt3QkFDTCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxLQUFLLEVBQUUsNEJBQTRCLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQzdELE1BQU0sRUFBRTs0QkFDTixLQUFLLEVBQUUsS0FBSzs0QkFDWixhQUFhOzRCQUNiLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7eUJBQ3pDO3FCQUNGLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsSUFBSTtvQkFDWCxNQUFNO29CQUNOLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTTtvQkFDckQsVUFBVSxFQUFFLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUztpQkFDbkc7Z0JBQ0QsT0FBTyxFQUFFLGtCQUFrQixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxHQUFHO2FBQzlFLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sWUFBWSxHQUFJLEtBQWUsQ0FBQyxPQUFPLENBQUM7WUFFOUMsbURBQW1EO1lBQ25ELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN6RCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBRTlELDRDQUE0QztZQUM1QyxJQUFJLE9BQTJCLENBQUM7WUFDaEMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDekMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFFRCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxpQkFBaUIsWUFBWSxFQUFFO2dCQUN0QyxNQUFNLEVBQUU7b0JBQ04sS0FBSyxFQUFFLEtBQUs7b0JBQ1osYUFBYSxFQUFFLFFBQVE7b0JBQ3ZCLFlBQVksRUFBRSxPQUFPO2lCQUN0QjthQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssVUFBVSxDQUFDLE1BQStCO1FBQ2hELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFvQixDQUFDO1FBRS9DLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEQsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsdURBQXVEO2FBQy9ELENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFbEQsT0FBTztnQkFDTCxPQUFPLEVBQUUsSUFBSTtnQkFDYixNQUFNLEVBQUUsU0FBUztnQkFDakIsT0FBTyxFQUFFLG1CQUFtQixTQUFTLENBQUMsTUFBTSxTQUFTO2FBQ3RELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLCtCQUFnQyxLQUFlLENBQUMsT0FBTyxFQUFFO2FBQ2pFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixPQUFPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EyQlYsQ0FBQztJQUNBLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYyxFQUFFLE1BQStCO1FBQzVELE1BQU0sT0FBTyxHQUFJLE1BQU0sQ0FBQyxVQUFxQixJQUFJLEVBQUUsQ0FBQztRQUNwRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFakYsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssVUFBVTtnQkFDYixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBc0MsQ0FBQztnQkFDN0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNFLE9BQU8sa0JBQWtCLE9BQU8sR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUNqRCxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxnQkFBZ0IsT0FBTyxFQUFFLENBQUM7WUFDbkM7Z0JBQ0UsT0FBTyxRQUFRLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
@@ -12,5 +12,6 @@ export declare class ShellTool extends BaseToolWrapper {
12
12
  initialize(): Promise<void>;
13
13
  cleanup(): Promise<void>;
14
14
  execute(action: string, params: Record<string, unknown>): Promise<interfaces.IToolExecutionResult>;
15
+ getToolExplanation(): string;
15
16
  getCallSummary(action: string, params: Record<string, unknown>): string;
16
17
  }
@@ -126,6 +126,53 @@ export class ShellTool extends BaseToolWrapper {
126
126
  };
127
127
  }
128
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
+ }
129
176
  getCallSummary(action, params) {
130
177
  switch (action) {
131
178
  case 'execute': {
@@ -152,4 +199,4 @@ export class ShellTool extends BaseToolWrapper {
152
199
  }
153
200
  }
154
201
  }
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5zaGVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0YWdlbnQudG9vbHMuc2hlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLFVBQVUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFN0Q7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxlQUFlO0lBQ3JDLElBQUksR0FBRyxPQUFPLENBQUM7SUFDZixXQUFXLEdBQ2hCLDZGQUE2RixDQUFDO0lBRXpGLE9BQU8sR0FBNkI7UUFDekM7WUFDRSxJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFDVCxpSEFBaUg7WUFDbkgsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUU7d0JBQ1AsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDREQUE0RDtxQkFDMUU7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxPQUFPO3dCQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLFdBQVcsRUFBRSx3REFBd0Q7cUJBQ3RFO29CQUNELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFO29CQUN6RSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsRUFBRTtvQkFDbkUsR0FBRyxFQUFFO3dCQUNILElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxvREFBb0Q7cUJBQ2xFO2lCQUNGO2dCQUNELFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUN0QjtTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVB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
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5zaGVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0YWdlbnQudG9vbHMuc2hlbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLFVBQVUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFN0Q7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxlQUFlO0lBQ3JDLElBQUksR0FBRyxPQUFPLENBQUM7SUFDZixXQUFXLEdBQ2hCLDZGQUE2RixDQUFDO0lBRXpGLE9BQU8sR0FBNkI7UUFDekM7WUFDRSxJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFDVCxpSEFBaUg7WUFDbkgsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUU7d0JBQ1AsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUFFLDREQUE0RDtxQkFDMUU7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxPQUFPO3dCQUNiLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7d0JBQ3pCLFdBQVcsRUFBRSx3REFBd0Q7cUJBQ3RFO29CQUNELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFO29CQUN6RSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsRUFBRTtvQkFDbkUsR0FBRyxFQUFFO3dCQUNILElBQUksRUFBRSxRQUFRO3dCQUNkLFdBQVcsRUFBRSxvREFBb0Q7cUJBQ2xFO2lCQUNGO2dCQUNELFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUN0QjtTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsT0FBTztZQUNiLFdBQVcsRUFBRSw0Q0FBNEM7WUFDekQsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSwrQ0FBK0MsRUFBRTtpQkFDMUY7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ3RCO1NBQ0Y7S0FDRixDQUFDO0lBRU0sVUFBVSxDQUFpQztJQUU1QyxLQUFLLENBQUMsVUFBVTtRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDbEQsUUFBUSxFQUFFLE1BQU07U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTyxDQUNsQixNQUFjLEVBQ2QsTUFBK0I7UUFFL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUM7WUFDSCxRQUFRLE1BQU0sRUFBRSxDQUFDO2dCQUNmLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDZixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBaUIsQ0FBQztvQkFDekMsTUFBTSxJQUFJLEdBQUksTUFBTSxDQUFDLElBQWlCLElBQUksRUFBRSxDQUFDO29CQUU3QyxnQkFBZ0I7b0JBQ2hCLE1BQU0sT0FBTyxHQUlULEVBQUUsQ0FBQztvQkFFUCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQzt3QkFDbkIsT0FBTyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBaUIsQ0FBQztvQkFDN0MsQ0FBQztvQkFFRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDZixPQUFPLENBQUMsR0FBRyxHQUFHOzRCQUNaLEdBQUcsT0FBTyxDQUFDLEdBQUc7NEJBQ2QsR0FBSSxNQUFNLENBQUMsR0FBeUI7eUJBQ3JDLENBQUM7b0JBQ0osQ0FBQztvQkFFRCwyREFBMkQ7b0JBQzNELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFFdkUsT0FBTzt3QkFDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVEsS0FBSyxDQUFDO3dCQUM5QixNQUFNLEVBQUU7NEJBQ04sT0FBTzs0QkFDUCxJQUFJOzRCQUNKLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTs0QkFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNOzRCQUNyQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07NEJBQ3JCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTt5QkFDdEI7cUJBQ0YsQ0FBQztnQkFDSixDQUFDO2dCQUVELEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDYixJQUFJLENBQUM7d0JBQ0gsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBaUIsQ0FBQyxDQUFDO3dCQUM3RSxPQUFPOzRCQUNMLE9BQU8sRUFBRSxJQUFJOzRCQUNiLE1BQU0sRUFBRTtnQ0FDTixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0NBQ3ZCLElBQUksRUFBRSxXQUFXO2dDQUNqQixNQUFNLEVBQUUsSUFBSTs2QkFDYjt5QkFDRixDQUFDO29CQUNKLENBQUM7b0JBQUMsTUFBTSxDQUFDO3dCQUNQLE9BQU87NEJBQ0wsT0FBTyxFQUFFLElBQUk7NEJBQ2IsTUFBTSxFQUFFO2dDQUNOLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztnQ0FDdkIsSUFBSSxFQUFFLElBQUk7Z0NBQ1YsTUFBTSxFQUFFLEtBQUs7NkJBQ2Q7eUJBQ0YsQ0FBQztvQkFDSixDQUFDO2dCQUNILENBQUM7Z0JBRUQ7b0JBQ0UsT0FBTzt3QkFDTCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxLQUFLLEVBQUUsbUJBQW1CLE1BQU0sRUFBRTtxQkFDbkMsQ0FBQztZQUNOLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDOUQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNENWLENBQUM7SUFDQSxDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQWMsRUFBRSxNQUErQjtRQUNuRSxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNmLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFpQixDQUFDO2dCQUN6QyxNQUFNLElBQUksR0FBSSxNQUFNLENBQUMsSUFBaUIsSUFBSSxFQUFFLENBQUM7Z0JBQzdDLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLE9BQU8sR0FBRyxZQUFZLFdBQVcsRUFBRSxDQUFDO2dCQUV4QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDZixPQUFPLElBQUksUUFBUSxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ25DLENBQUM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ25CLE9BQU8sSUFBSSxjQUFjLE1BQU0sQ0FBQyxPQUFPLEtBQUssQ0FBQztnQkFDL0MsQ0FBQztnQkFFRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBYSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMvRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdELE9BQU8sSUFBSSxVQUFVLE9BQU8sR0FBRyxDQUFDO2dCQUNsQyxDQUFDO2dCQUVELE9BQU8sT0FBTyxDQUFDO1lBQ2pCLENBQUM7WUFFRCxLQUFLLE9BQU87Z0JBQ1YsT0FBTyxxQkFBcUIsTUFBTSxDQUFDLE9BQU8sMkJBQTJCLENBQUM7WUFFeEU7Z0JBQ0UsT0FBTyxtQkFBbUIsTUFBTSxFQUFFLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartagent",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "private": false,
5
5
  "description": "an agentic framework built on top of @push.rocks/smartai",
6
6
  "main": "dist_ts/index.js",
package/readme.hints.md CHANGED
@@ -1,15 +1,39 @@
1
1
  # Project Readme Hints
2
2
 
3
3
  ## Overview
4
- `@push.rocks/smartagent` is an agentic framework built on top of `@push.rocks/smartai`. It provides autonomous AI agent capabilities including tool use, multi-step reasoning, and conversation memory.
4
+ `@push.rocks/smartagent` is a dual-agent agentic framework built on top of `@push.rocks/smartai`. It implements a Driver/Guardian architecture where the Driver proposes tool calls and the Guardian evaluates them against security policies.
5
5
 
6
6
  ## Architecture
7
- - **SmartAgent**: Main class that wraps SmartAi and adds agentic behaviors
8
- - **plugins.ts**: Imports and re-exports smartai
9
- - **index.ts**: Main entry point, exports SmartAgent class and relevant types
7
+ - **DualAgentOrchestrator**: Main entry point, coordinates Driver and Guardian agents
8
+ - **DriverAgent**: Reasons about tasks, plans steps, proposes tool calls
9
+ - **GuardianAgent**: Evaluates tool calls against configured policies
10
+ - **BaseToolWrapper**: Base class for creating custom tools
11
+ - **plugins.ts**: Imports and re-exports smartai and other dependencies
12
+
13
+ ## Standard Tools
14
+ 1. **FilesystemTool** - File operations with scoping and exclusion patterns
15
+ 2. **HttpTool** - HTTP requests
16
+ 3. **ShellTool** - Secure shell commands (no injection possible)
17
+ 4. **BrowserTool** - Web page interaction via Puppeteer
18
+ 5. **DenoTool** - Sandboxed TypeScript/JavaScript execution
19
+ 6. **JsonValidatorTool** - JSON validation and formatting
20
+
21
+ ## Key Features
22
+ - Token streaming support (`onToken` callback)
23
+ - Vision support (pass images as base64)
24
+ - Progress events (`onProgress` callback)
25
+ - Scoped filesystem with exclusion patterns
26
+ - Result truncation with configurable limits
27
+ - History windowing to manage token usage
10
28
 
11
29
  ## Key Dependencies
12
- - `@push.rocks/smartai`: Provides the underlying multi-modal AI provider interface
30
+ - `@push.rocks/smartai`: Multi-provider AI interface
31
+ - `@push.rocks/smartfs`: Filesystem operations
32
+ - `@push.rocks/smartshell`: Shell command execution
33
+ - `@push.rocks/smartbrowser`: Browser automation
34
+ - `@push.rocks/smartdeno`: Deno code execution
35
+ - `@push.rocks/smartrequest`: HTTP requests
36
+ - `minimatch`: Glob pattern matching for exclusions
13
37
 
14
38
  ## Test Structure
15
39
  - Tests use `@git.zone/tstest/tapbundle`
package/readme.md CHANGED
@@ -50,6 +50,7 @@ flowchart TB
50
50
  Shell["Shell"]
51
51
  Browser["Browser"]
52
52
  Deno["Deno"]
53
+ JSON["JSON Validator"]
53
54
  end
54
55
 
55
56
  Task --> Orchestrator
@@ -99,7 +100,7 @@ await orchestrator.stop();
99
100
 
100
101
  ## Standard Tools
101
102
 
102
- SmartAgent comes with five battle-tested tools out of the box:
103
+ SmartAgent comes with six battle-tested tools out of the box:
103
104
 
104
105
  ### 🗂️ FilesystemTool
105
106
 
@@ -117,11 +118,29 @@ File and directory operations powered by `@push.rocks/smartfs`.
117
118
  </tool_call>
118
119
  ```
119
120
 
120
- **Scoped Filesystem**: Lock file operations to a specific directory:
121
+ **Scoped Filesystem**: Lock file operations to a specific directory with optional exclusion patterns:
121
122
 
122
123
  ```typescript
123
124
  // Only allow access within a specific directory
124
125
  orchestrator.registerScopedFilesystemTool('/home/user/workspace');
126
+
127
+ // With exclusion patterns (glob syntax)
128
+ orchestrator.registerScopedFilesystemTool('/home/user/workspace', [
129
+ '.nogit/**',
130
+ 'node_modules/**',
131
+ '*.secret',
132
+ ]);
133
+ ```
134
+
135
+ **Line-range Reading**: Read specific portions of large files:
136
+
137
+ ```typescript
138
+ <tool_call>
139
+ <tool>filesystem</tool>
140
+ <action>read</action>
141
+ <params>{"path": "/var/log/app.log", "startLine": 100, "endLine": 150}</params>
142
+ <reasoning>Reading only the relevant log section to avoid token overload</reasoning>
143
+ </tool_call>
125
144
  ```
126
145
 
127
146
  ### 🌐 HttpTool
@@ -212,6 +231,105 @@ By default, code runs **fully sandboxed with no permissions**. Permissions must
212
231
  </tool_call>
213
232
  ```
214
233
 
234
+ ### 📋 JsonValidatorTool
235
+
236
+ Validate and format JSON data. Perfect for agents to self-check their JSON output before completing tasks.
237
+
238
+ **Actions**: `validate`, `format`
239
+
240
+ ```typescript
241
+ // Validate JSON with required field checking
242
+ <tool_call>
243
+ <tool>json</tool>
244
+ <action>validate</action>
245
+ <params>{
246
+ "jsonString": "{\"name\": \"test\", \"version\": \"1.0.0\"}",
247
+ "requiredFields": ["name", "version", "description"]
248
+ }</params>
249
+ <reasoning>Ensuring the config has all required fields before saving</reasoning>
250
+ </tool_call>
251
+
252
+ // Pretty-print JSON
253
+ <tool_call>
254
+ <tool>json</tool>
255
+ <action>format</action>
256
+ <params>{"jsonString": "{\"compact\":true,\"data\":[1,2,3]}"}</params>
257
+ <reasoning>Formatting JSON for readable output</reasoning>
258
+ </tool_call>
259
+ ```
260
+
261
+ ## 🎥 Streaming Support
262
+
263
+ SmartAgent supports token-by-token streaming for real-time output during LLM generation:
264
+
265
+ ```typescript
266
+ const orchestrator = new DualAgentOrchestrator({
267
+ openaiToken: 'sk-...',
268
+ defaultProvider: 'openai',
269
+ guardianPolicyPrompt: '...',
270
+
271
+ // Token streaming callback
272
+ onToken: (token, source) => {
273
+ // source is 'driver' or 'guardian'
274
+ process.stdout.write(token);
275
+ },
276
+ });
277
+ ```
278
+
279
+ This is perfect for CLI applications or UIs that need to show progress as the agent thinks.
280
+
281
+ ## 🖼️ Vision Support
282
+
283
+ Pass images to vision-capable models for multimodal tasks:
284
+
285
+ ```typescript
286
+ import { readFileSync } from 'fs';
287
+
288
+ // Load image as base64
289
+ const imageBase64 = readFileSync('screenshot.png').toString('base64');
290
+
291
+ // Run task with images
292
+ const result = await orchestrator.run(
293
+ 'Analyze this UI screenshot and describe any usability issues',
294
+ { images: [imageBase64] }
295
+ );
296
+ ```
297
+
298
+ ## 📊 Progress Events
299
+
300
+ Get real-time feedback on task execution with the `onProgress` callback:
301
+
302
+ ```typescript
303
+ const orchestrator = new DualAgentOrchestrator({
304
+ openaiToken: 'sk-...',
305
+ guardianPolicyPrompt: '...',
306
+ logPrefix: '[MyAgent]', // Optional prefix for log messages
307
+
308
+ onProgress: (event) => {
309
+ // Pre-formatted log message ready for output
310
+ console.log(event.logMessage);
311
+
312
+ // Or handle specific event types
313
+ switch (event.type) {
314
+ case 'tool_proposed':
315
+ console.log(`Proposing: ${event.toolName}.${event.action}`);
316
+ break;
317
+ case 'tool_approved':
318
+ console.log(`✓ Approved`);
319
+ break;
320
+ case 'tool_rejected':
321
+ console.log(`✗ Rejected: ${event.reason}`);
322
+ break;
323
+ case 'task_completed':
324
+ console.log(`Done in ${event.iteration} iterations`);
325
+ break;
326
+ }
327
+ },
328
+ });
329
+ ```
330
+
331
+ **Event Types**: `task_started`, `iteration_started`, `tool_proposed`, `guardian_evaluating`, `tool_approved`, `tool_rejected`, `tool_executing`, `tool_completed`, `task_completed`, `clarification_needed`, `max_iterations`, `max_rejections`
332
+
215
333
  ## Guardian Policy Examples
216
334
 
217
335
  The Guardian's power comes from your policy. Here are battle-tested examples:
@@ -294,10 +412,19 @@ interface IDualAgentOptions {
294
412
  // Agent configuration
295
413
  driverSystemMessage?: string; // Custom system message for Driver
296
414
  guardianPolicyPrompt: string; // REQUIRED: Policy for Guardian to enforce
415
+ name?: string; // Agent system name
416
+ verbose?: boolean; // Enable verbose logging
297
417
 
298
418
  // Limits
299
419
  maxIterations?: number; // Max task iterations (default: 20)
300
420
  maxConsecutiveRejections?: number; // Abort after N rejections (default: 3)
421
+ maxResultChars?: number; // Max chars for tool results before truncation (default: 15000)
422
+ maxHistoryMessages?: number; // Max history messages for API (default: 20)
423
+
424
+ // Callbacks
425
+ onProgress?: (event: IProgressEvent) => void; // Progress event callback
426
+ onToken?: (token: string, source: 'driver' | 'guardian') => void; // Streaming callback
427
+ logPrefix?: string; // Prefix for log messages
301
428
  }
302
429
  ```
303
430
 
@@ -311,6 +438,10 @@ interface IDualAgentRunResult {
311
438
  iterations: number; // Number of iterations taken
312
439
  history: IAgentMessage[]; // Full conversation history
313
440
  status: TDualAgentRunStatus; // 'completed' | 'max_iterations_reached' | etc.
441
+ toolCallCount?: number; // Number of tool calls made
442
+ rejectionCount?: number; // Number of Guardian rejections
443
+ toolLog?: IToolExecutionLog[]; // Detailed tool execution log
444
+ error?: string; // Error message if status is 'error'
314
445
  }
315
446
 
316
447
  type TDualAgentRunStatus =
@@ -365,6 +496,7 @@ class MyCustomTool extends BaseToolWrapper {
365
496
  return {
366
497
  success: true,
367
498
  result: { processed: params.input },
499
+ summary: `Processed input: ${params.input}`, // Optional human-readable summary
368
500
  };
369
501
  }
370
502
 
@@ -439,11 +571,11 @@ const orchestrator = new DualAgentOrchestrator({
439
571
  |--------|-------------|
440
572
  | `start()` | Initialize all tools and AI providers |
441
573
  | `stop()` | Cleanup all tools and resources |
442
- | `run(task: string)` | Execute a task and return result |
443
- | `continueTask(input: string)` | Continue a task with user input |
574
+ | `run(task, options?)` | Execute a task with optional images for vision |
575
+ | `continueTask(input)` | Continue a task with user input |
444
576
  | `registerTool(tool)` | Register a custom tool |
445
577
  | `registerStandardTools()` | Register all built-in tools |
446
- | `registerScopedFilesystemTool(basePath)` | Register filesystem tool with path restriction |
578
+ | `registerScopedFilesystemTool(basePath, excludePatterns?)` | Register filesystem tool with path restriction |
447
579
  | `setGuardianPolicy(policy)` | Update Guardian policy at runtime |
448
580
  | `getHistory()` | Get conversation history |
449
581
  | `getToolNames()` | Get list of registered tool names |
@@ -459,14 +591,18 @@ export { GuardianAgent } from '@push.rocks/smartagent';
459
591
 
460
592
  // Tools
461
593
  export { BaseToolWrapper } from '@push.rocks/smartagent';
462
- export { FilesystemTool } from '@push.rocks/smartagent';
594
+ export { FilesystemTool, type IFilesystemToolOptions } from '@push.rocks/smartagent';
463
595
  export { HttpTool } from '@push.rocks/smartagent';
464
596
  export { ShellTool } from '@push.rocks/smartagent';
465
597
  export { BrowserTool } from '@push.rocks/smartagent';
466
- export { DenoTool } from '@push.rocks/smartagent';
598
+ export { DenoTool, type TDenoPermission } from '@push.rocks/smartagent';
599
+ export { JsonValidatorTool } from '@push.rocks/smartagent';
467
600
 
468
601
  // Types and interfaces
469
- export * from '@push.rocks/smartagent'; // All interfaces
602
+ export * from '@push.rocks/smartagent'; // All interfaces
603
+
604
+ // Re-exported from @push.rocks/smartai
605
+ export { type ISmartAiOptions, type TProvider, type ChatMessage, type ChatOptions, type ChatResponse };
470
606
  ```
471
607
 
472
608
  ## License and Legal Information
@@ -483,7 +619,7 @@ Use of these trademarks must comply with Task Venture Capital GmbH's Trademark G
483
619
 
484
620
  ### Company Information
485
621
 
486
- Task Venture Capital GmbH
622
+ Task Venture Capital GmbH
487
623
  Registered at District Court Bremen HRB 35230 HB, Germany
488
624
 
489
625
  For any legal inquiries or further information, please contact us via email at hello@task.vc.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartagent',
6
- version: '1.3.0',
6
+ version: '1.4.0',
7
7
  description: 'an agentic framework built on top of @push.rocks/smartai'
8
8
  }
@@ -35,6 +35,13 @@ export abstract class BaseToolWrapper implements interfaces.IAgentToolWrapper {
35
35
  */
36
36
  abstract getCallSummary(action: string, params: Record<string, unknown>): string;
37
37
 
38
+ /**
39
+ * Get a comprehensive explanation of this tool for LLM consumption.
40
+ * Tools should implement this to provide detailed usage instructions with examples.
41
+ * This includes parameter schemas and concrete <tool_call> XML examples.
42
+ */
43
+ abstract getToolExplanation(): string;
44
+
38
45
  /**
39
46
  * Validate that an action exists for this tool
40
47
  * @throws Error if the action is not valid
@@ -60,14 +67,10 @@ export abstract class BaseToolWrapper implements interfaces.IAgentToolWrapper {
60
67
 
61
68
  /**
62
69
  * Get the full tool description including all actions
63
- * Used for Driver's tool awareness
70
+ * Used for Driver's tool awareness - now delegates to getToolExplanation()
64
71
  */
65
72
  public getFullDescription(): string {
66
- const actionDescriptions = this.actions
67
- .map((a) => ` - ${a.name}: ${a.description}`)
68
- .join('\n');
69
-
70
- return `${this.name}: ${this.description}\nActions:\n${actionDescriptions}`;
73
+ return this.getToolExplanation();
71
74
  }
72
75
 
73
76
  /**