@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,46 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import * as interfaces from './smartagent.interfaces.js';
3
- import type { BaseToolWrapper } from './smartagent.tools.base.js';
4
- /**
5
- * GuardianAgent - Evaluates tool call proposals against a policy
6
- * Uses AI reasoning to approve or reject tool calls
7
- */
8
- export declare class GuardianAgent {
9
- private provider;
10
- private policyPrompt;
11
- private tools;
12
- constructor(provider: plugins.smartai.MultiModalModel, policyPrompt: string);
13
- /**
14
- * Register a tool for reference during evaluation
15
- */
16
- registerTool(tool: BaseToolWrapper): void;
17
- /**
18
- * Evaluate a tool call proposal against the policy
19
- */
20
- evaluate(proposal: interfaces.IToolCallProposal, taskContext: string): Promise<interfaces.IGuardianDecision>;
21
- /**
22
- * Build the system message for the Guardian
23
- */
24
- private buildGuardianSystemMessage;
25
- /**
26
- * Build the evaluation prompt for a specific proposal
27
- */
28
- private buildEvaluationPrompt;
29
- /**
30
- * Parse the guardian decision from the response
31
- */
32
- private parseDecision;
33
- /**
34
- * Quick validation without AI (for obviously safe/unsafe operations)
35
- * Returns null if AI evaluation is needed
36
- */
37
- quickValidate(proposal: interfaces.IToolCallProposal): interfaces.IGuardianDecision | null;
38
- /**
39
- * Update the policy prompt
40
- */
41
- setPolicy(policyPrompt: string): void;
42
- /**
43
- * Get current policy
44
- */
45
- getPolicy(): string;
46
- }
@@ -1,201 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import * as interfaces from './smartagent.interfaces.js';
3
- /**
4
- * GuardianAgent - Evaluates tool call proposals against a policy
5
- * Uses AI reasoning to approve or reject tool calls
6
- */
7
- export class GuardianAgent {
8
- provider;
9
- policyPrompt;
10
- tools = new Map();
11
- constructor(provider, policyPrompt) {
12
- this.provider = provider;
13
- this.policyPrompt = policyPrompt;
14
- }
15
- /**
16
- * Register a tool for reference during evaluation
17
- */
18
- registerTool(tool) {
19
- this.tools.set(tool.name, tool);
20
- }
21
- /**
22
- * Evaluate a tool call proposal against the policy
23
- */
24
- async evaluate(proposal, taskContext) {
25
- // Get the tool to generate a human-readable summary
26
- const tool = this.tools.get(proposal.toolName);
27
- let callSummary = `${proposal.toolName}.${proposal.action}(${JSON.stringify(proposal.params)})`;
28
- if (tool) {
29
- try {
30
- callSummary = tool.getCallSummary(proposal.action, proposal.params);
31
- }
32
- catch {
33
- // Fallback to basic summary
34
- }
35
- }
36
- // Build the evaluation prompt
37
- const evaluationPrompt = this.buildEvaluationPrompt(proposal, callSummary, taskContext);
38
- // Get response from provider
39
- const response = await this.provider.chat({
40
- systemMessage: this.buildGuardianSystemMessage(),
41
- userMessage: evaluationPrompt,
42
- messageHistory: [],
43
- });
44
- // Parse the decision from the response
45
- return this.parseDecision(response.message, proposal);
46
- }
47
- /**
48
- * Build the system message for the Guardian
49
- */
50
- buildGuardianSystemMessage() {
51
- return `You are a Guardian AI responsible for evaluating tool call proposals.
52
-
53
- ## Your Role
54
- You evaluate whether proposed tool calls are safe and aligned with the policy.
55
-
56
- ## Policy to Enforce
57
- ${this.policyPrompt}
58
-
59
- ## Response Format
60
- For EVERY evaluation, respond with a decision in this exact format:
61
-
62
- <guardian_decision>
63
- <decision>approve OR reject</decision>
64
- <reason>Your detailed explanation</reason>
65
- <concerns>List any concerns, even if approving</concerns>
66
- <suggestions>Alternative approaches if rejecting</suggestions>
67
- </guardian_decision>
68
-
69
- ## Guidelines
70
- 1. Carefully analyze what the tool call will do
71
- 2. Consider security implications
72
- 3. Check against the policy requirements
73
- 4. If uncertain, err on the side of caution (reject)
74
- 5. Provide actionable feedback when rejecting`;
75
- }
76
- /**
77
- * Build the evaluation prompt for a specific proposal
78
- */
79
- buildEvaluationPrompt(proposal, callSummary, taskContext) {
80
- const toolInfo = this.tools.get(proposal.toolName);
81
- const toolDescription = toolInfo ? toolInfo.getFullDescription() : 'Unknown tool';
82
- return `## Task Context
83
- ${taskContext}
84
-
85
- ## Tool Being Used
86
- ${toolDescription}
87
-
88
- ## Proposed Tool Call
89
- - **Tool**: ${proposal.toolName}
90
- - **Action**: ${proposal.action}
91
- - **Parameters**: ${JSON.stringify(proposal.params, null, 2)}
92
-
93
- ## Human-Readable Summary
94
- ${callSummary}
95
-
96
- ## Driver's Reasoning
97
- ${proposal.reasoning || 'No reasoning provided'}
98
-
99
- ---
100
-
101
- Evaluate this tool call against the policy. Should it be approved or rejected?`;
102
- }
103
- /**
104
- * Parse the guardian decision from the response
105
- */
106
- parseDecision(response, proposal) {
107
- // Try to extract from XML tags
108
- const decisionMatch = response.match(/<decision>(.*?)<\/decision>/s);
109
- const reasonMatch = response.match(/<reason>([\s\S]*?)<\/reason>/);
110
- const concernsMatch = response.match(/<concerns>([\s\S]*?)<\/concerns>/);
111
- const suggestionsMatch = response.match(/<suggestions>([\s\S]*?)<\/suggestions>/);
112
- // Determine decision
113
- let decision = 'reject';
114
- if (decisionMatch) {
115
- const decisionText = decisionMatch[1].trim().toLowerCase();
116
- decision = decisionText.includes('approve') ? 'approve' : 'reject';
117
- }
118
- else {
119
- // Fallback: look for approval keywords in the response
120
- const lowerResponse = response.toLowerCase();
121
- if (lowerResponse.includes('approved') ||
122
- lowerResponse.includes('i approve') ||
123
- lowerResponse.includes('looks safe')) {
124
- decision = 'approve';
125
- }
126
- }
127
- // Extract reason
128
- let reason = reasonMatch ? reasonMatch[1].trim() : '';
129
- if (!reason) {
130
- // Use the full response as reason if no tag found
131
- reason = response.substring(0, 500);
132
- }
133
- // Extract concerns
134
- const concerns = [];
135
- if (concernsMatch) {
136
- const concernsText = concernsMatch[1].trim();
137
- if (concernsText && concernsText.toLowerCase() !== 'none') {
138
- // Split by newlines or bullet points
139
- const concernLines = concernsText.split(/[\n\r]+/).map(l => l.trim()).filter(l => l);
140
- concerns.push(...concernLines);
141
- }
142
- }
143
- // Extract suggestions
144
- const suggestions = suggestionsMatch ? suggestionsMatch[1].trim() : undefined;
145
- return {
146
- decision,
147
- reason,
148
- concerns: concerns.length > 0 ? concerns : undefined,
149
- suggestions: suggestions && suggestions.toLowerCase() !== 'none' ? suggestions : undefined,
150
- };
151
- }
152
- /**
153
- * Quick validation without AI (for obviously safe/unsafe operations)
154
- * Returns null if AI evaluation is needed
155
- */
156
- quickValidate(proposal) {
157
- // Check if tool exists
158
- if (!this.tools.has(proposal.toolName)) {
159
- return {
160
- decision: 'reject',
161
- reason: `Unknown tool: ${proposal.toolName}`,
162
- };
163
- }
164
- // Check if action exists
165
- const tool = this.tools.get(proposal.toolName);
166
- const validAction = tool.actions.find(a => a.name === proposal.action);
167
- if (!validAction) {
168
- return {
169
- decision: 'reject',
170
- reason: `Unknown action "${proposal.action}" for tool "${proposal.toolName}". Available actions: ${tool.actions.map(a => a.name).join(', ')}`,
171
- };
172
- }
173
- // Check required parameters
174
- const schema = validAction.parameters;
175
- if (schema && schema.required && Array.isArray(schema.required)) {
176
- for (const requiredParam of schema.required) {
177
- if (!(requiredParam in proposal.params)) {
178
- return {
179
- decision: 'reject',
180
- reason: `Missing required parameter: ${requiredParam}`,
181
- };
182
- }
183
- }
184
- }
185
- // Needs full AI evaluation
186
- return null;
187
- }
188
- /**
189
- * Update the policy prompt
190
- */
191
- setPolicy(policyPrompt) {
192
- this.policyPrompt = policyPrompt;
193
- }
194
- /**
195
- * Get current policy
196
- */
197
- getPolicy() {
198
- return this.policyPrompt;
199
- }
200
- }
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC5jbGFzc2VzLmd1YXJkaWFuYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFnZW50LmNsYXNzZXMuZ3VhcmRpYW5hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssVUFBVSxNQUFNLDRCQUE0QixDQUFDO0FBR3pEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBQ2hCLFFBQVEsQ0FBa0M7SUFDMUMsWUFBWSxDQUFTO0lBQ3JCLEtBQUssR0FBaUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV4RCxZQUNFLFFBQXlDLEVBQ3pDLFlBQW9CO1FBRXBCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVksQ0FBQyxJQUFxQjtRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxRQUFRLENBQ25CLFFBQXNDLEVBQ3RDLFdBQW1CO1FBRW5CLG9EQUFvRDtRQUNwRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxXQUFXLEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUVoRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDO2dCQUNILFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FB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
@@ -1,52 +0,0 @@
1
- import * as interfaces from './smartagent.interfaces.js';
2
- /**
3
- * Abstract base class for tool wrappers
4
- * All tool implementations should extend this class
5
- */
6
- export declare abstract class BaseToolWrapper implements interfaces.IAgentToolWrapper {
7
- abstract name: string;
8
- abstract description: string;
9
- abstract actions: interfaces.IToolAction[];
10
- protected isInitialized: boolean;
11
- /**
12
- * Initialize the tool and any required resources
13
- */
14
- abstract initialize(): Promise<void>;
15
- /**
16
- * Cleanup any resources used by the tool
17
- */
18
- abstract cleanup(): Promise<void>;
19
- /**
20
- * Execute an action with the given parameters
21
- */
22
- abstract execute(action: string, params: Record<string, unknown>): Promise<interfaces.IToolExecutionResult>;
23
- /**
24
- * Generate a human-readable summary of what the action will do
25
- * This is used by the Guardian to understand the proposed action
26
- */
27
- abstract getCallSummary(action: string, params: Record<string, unknown>): string;
28
- /**
29
- * Get a comprehensive explanation of this tool for LLM consumption.
30
- * Tools should implement this to provide detailed usage instructions with examples.
31
- * This includes parameter schemas and concrete <tool_call> XML examples.
32
- */
33
- abstract getToolExplanation(): string;
34
- /**
35
- * Validate that an action exists for this tool
36
- * @throws Error if the action is not valid
37
- */
38
- protected validateAction(action: string): void;
39
- /**
40
- * Check if the tool is initialized
41
- */
42
- protected ensureInitialized(): void;
43
- /**
44
- * Get the full tool description including all actions
45
- * Used for Driver's tool awareness - now delegates to getToolExplanation()
46
- */
47
- getFullDescription(): string;
48
- /**
49
- * Get the JSON schema for a specific action
50
- */
51
- getActionSchema(action: string): Record<string, unknown> | undefined;
52
- }
@@ -1,42 +0,0 @@
1
- import * as interfaces from './smartagent.interfaces.js';
2
- /**
3
- * Abstract base class for tool wrappers
4
- * All tool implementations should extend this class
5
- */
6
- export class BaseToolWrapper {
7
- isInitialized = false;
8
- /**
9
- * Validate that an action exists for this tool
10
- * @throws Error if the action is not valid
11
- */
12
- validateAction(action) {
13
- const validAction = this.actions.find((a) => a.name === action);
14
- if (!validAction) {
15
- const availableActions = this.actions.map((a) => a.name).join(', ');
16
- throw new Error(`Unknown action "${action}" for tool "${this.name}". Available actions: ${availableActions}`);
17
- }
18
- }
19
- /**
20
- * Check if the tool is initialized
21
- */
22
- ensureInitialized() {
23
- if (!this.isInitialized) {
24
- throw new Error(`Tool "${this.name}" is not initialized. Call initialize() first.`);
25
- }
26
- }
27
- /**
28
- * Get the full tool description including all actions
29
- * Used for Driver's tool awareness - now delegates to getToolExplanation()
30
- */
31
- getFullDescription() {
32
- return this.getToolExplanation();
33
- }
34
- /**
35
- * Get the JSON schema for a specific action
36
- */
37
- getActionSchema(action) {
38
- const actionDef = this.actions.find((a) => a.name === action);
39
- return actionDef?.parameters;
40
- }
41
- }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhZ2VudC50b29scy5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sNEJBQTRCLENBQUM7QUFFekQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQixlQUFlO0lBS3pCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFpQ2hDOzs7T0FHRztJQUNPLGNBQWMsQ0FBQyxNQUFjO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUJBQW1CLE1BQU0sZUFBZSxJQUFJLENBQUMsSUFBSSx5QkFBeUIsZ0JBQWdCLEVBQUUsQ0FDN0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxpQkFBaUI7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksZ0RBQWdELENBQUMsQ0FBQztRQUN0RixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGtCQUFrQjtRQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWUsQ0FBQyxNQUFjO1FBQ25DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQzlELE9BQU8sU0FBUyxFQUFFLFVBQVUsQ0FBQztJQUMvQixDQUFDO0NBQ0YifQ==
@@ -1,17 +0,0 @@
1
- import * as interfaces from './smartagent.interfaces.js';
2
- import { BaseToolWrapper } from './smartagent.tools.base.js';
3
- /**
4
- * Browser tool for web page interaction
5
- * Wraps @push.rocks/smartbrowser (Puppeteer-based)
6
- */
7
- export declare class BrowserTool extends BaseToolWrapper {
8
- name: string;
9
- description: string;
10
- actions: interfaces.IToolAction[];
11
- private smartbrowser;
12
- initialize(): Promise<void>;
13
- cleanup(): Promise<void>;
14
- execute(action: string, params: Record<string, unknown>): Promise<interfaces.IToolExecutionResult>;
15
- getToolExplanation(): string;
16
- getCallSummary(action: string, params: Record<string, unknown>): string;
17
- }
@@ -1,229 +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
- * Browser tool for web page interaction
6
- * Wraps @push.rocks/smartbrowser (Puppeteer-based)
7
- */
8
- export class BrowserTool extends BaseToolWrapper {
9
- name = 'browser';
10
- description = 'Interact with web pages - take screenshots, generate PDFs, and execute JavaScript on pages';
11
- actions = [
12
- {
13
- name: 'screenshot',
14
- description: 'Take a screenshot of a webpage',
15
- parameters: {
16
- type: 'object',
17
- properties: {
18
- url: { type: 'string', description: 'URL of the page to screenshot' },
19
- },
20
- required: ['url'],
21
- },
22
- },
23
- {
24
- name: 'pdf',
25
- description: 'Generate a PDF from a webpage',
26
- parameters: {
27
- type: 'object',
28
- properties: {
29
- url: { type: 'string', description: 'URL of the page to convert to PDF' },
30
- },
31
- required: ['url'],
32
- },
33
- },
34
- {
35
- name: 'evaluate',
36
- description: 'Execute JavaScript code on a webpage and return the result. The script runs in the browser context.',
37
- parameters: {
38
- type: 'object',
39
- properties: {
40
- url: { type: 'string', description: 'URL of the page to run the script on' },
41
- script: {
42
- type: 'string',
43
- description: 'JavaScript code to execute. Must be a valid expression or statements that return a value.',
44
- },
45
- },
46
- required: ['url', 'script'],
47
- },
48
- },
49
- {
50
- name: 'getPageContent',
51
- description: 'Get the text content and title of a webpage',
52
- parameters: {
53
- type: 'object',
54
- properties: {
55
- url: { type: 'string', description: 'URL of the page to get content from' },
56
- },
57
- required: ['url'],
58
- },
59
- },
60
- ];
61
- smartbrowser;
62
- async initialize() {
63
- this.smartbrowser = new plugins.smartbrowser.SmartBrowser();
64
- await this.smartbrowser.start();
65
- this.isInitialized = true;
66
- }
67
- async cleanup() {
68
- if (this.smartbrowser) {
69
- await this.smartbrowser.stop();
70
- }
71
- this.isInitialized = false;
72
- }
73
- async execute(action, params) {
74
- this.validateAction(action);
75
- this.ensureInitialized();
76
- try {
77
- switch (action) {
78
- case 'screenshot': {
79
- const result = await this.smartbrowser.screenshotFromPage(params.url);
80
- return {
81
- success: true,
82
- result: {
83
- url: params.url,
84
- name: result.name,
85
- id: result.id,
86
- bufferBase64: Buffer.from(result.buffer).toString('base64'),
87
- bufferLength: result.buffer.length,
88
- type: 'screenshot',
89
- },
90
- };
91
- }
92
- case 'pdf': {
93
- const result = await this.smartbrowser.pdfFromPage(params.url);
94
- return {
95
- success: true,
96
- result: {
97
- url: params.url,
98
- name: result.name,
99
- id: result.id,
100
- bufferBase64: Buffer.from(result.buffer).toString('base64'),
101
- bufferLength: result.buffer.length,
102
- type: 'pdf',
103
- },
104
- };
105
- }
106
- case 'evaluate': {
107
- const script = params.script;
108
- // Create an async function from the script
109
- // The script should be valid JavaScript that returns a value
110
- const result = await this.smartbrowser.evaluateOnPage(params.url, async () => {
111
- // This runs in the browser context
112
- // We need to evaluate the script string dynamically
113
- // eslint-disable-next-line no-eval
114
- return eval(script);
115
- });
116
- return {
117
- success: true,
118
- result: {
119
- url: params.url,
120
- script: script.substring(0, 200) + (script.length > 200 ? '...' : ''),
121
- evaluationResult: result,
122
- },
123
- };
124
- }
125
- case 'getPageContent': {
126
- const result = await this.smartbrowser.evaluateOnPage(params.url, async () => {
127
- return {
128
- title: document.title,
129
- textContent: document.body?.innerText || '',
130
- url: window.location.href,
131
- };
132
- });
133
- return {
134
- success: true,
135
- result: {
136
- url: params.url,
137
- title: result.title,
138
- textContent: result.textContent.length > 10000
139
- ? result.textContent.substring(0, 10000) + '... [truncated]'
140
- : result.textContent,
141
- actualUrl: result.url,
142
- },
143
- };
144
- }
145
- default:
146
- return {
147
- success: false,
148
- error: `Unknown action: ${action}`,
149
- };
150
- }
151
- }
152
- catch (error) {
153
- return {
154
- success: false,
155
- error: error instanceof Error ? error.message : String(error),
156
- };
157
- }
158
- }
159
- getToolExplanation() {
160
- return `## Tool: browser
161
- Interact with web pages - take screenshots, generate PDFs, and execute JavaScript on pages.
162
-
163
- ### Actions:
164
-
165
- **screenshot** - Take a screenshot of a webpage
166
- Parameters:
167
- - url (required): URL of the page to screenshot
168
-
169
- Example:
170
- <tool_call>
171
- <tool>browser</tool>
172
- <action>screenshot</action>
173
- <params>{"url": "https://example.com"}</params>
174
- </tool_call>
175
-
176
- **pdf** - Generate a PDF from a webpage
177
- Parameters:
178
- - url (required): URL of the page to convert to PDF
179
-
180
- Example:
181
- <tool_call>
182
- <tool>browser</tool>
183
- <action>pdf</action>
184
- <params>{"url": "https://example.com/report"}</params>
185
- </tool_call>
186
-
187
- **evaluate** - Execute JavaScript code on a webpage and return the result
188
- Parameters:
189
- - url (required): URL of the page to run the script on
190
- - script (required): JavaScript code to execute (must return a value)
191
-
192
- Example:
193
- <tool_call>
194
- <tool>browser</tool>
195
- <action>evaluate</action>
196
- <params>{"url": "https://example.com", "script": "document.querySelectorAll('a').length"}</params>
197
- </tool_call>
198
-
199
- **getPageContent** - Get the text content and title of a webpage
200
- Parameters:
201
- - url (required): URL of the page to get content from
202
-
203
- Example:
204
- <tool_call>
205
- <tool>browser</tool>
206
- <action>getPageContent</action>
207
- <params>{"url": "https://example.com"}</params>
208
- </tool_call>
209
- `;
210
- }
211
- getCallSummary(action, params) {
212
- switch (action) {
213
- case 'screenshot':
214
- return `Take screenshot of "${params.url}"`;
215
- case 'pdf':
216
- return `Generate PDF from "${params.url}"`;
217
- case 'evaluate': {
218
- const script = params.script;
219
- const preview = script.length > 100 ? script.substring(0, 100) + '...' : script;
220
- return `Execute JavaScript on "${params.url}": "${preview}"`;
221
- }
222
- case 'getPageContent':
223
- return `Get text content and title from "${params.url}"`;
224
- default:
225
- return `Unknown action: ${action}`;
226
- }
227
- }
228
- }
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC50b29scy5icm93c2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhZ2VudC50b29scy5icm93c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsZUFBZTtJQUN2QyxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ2pCLFdBQVcsR0FDaEIsNEZBQTRGLENBQUM7SUFFeEYsT0FBTyxHQUE2QjtRQUN6QztZQUNFLElBQUksRUFBRSxZQUFZO1lBQ2xCLFdBQVcsRUFBRSxnQ0FBZ0M7WUFDN0MsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSwrQkFBK0IsRUFBRTtpQkFDdEU7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ2xCO1NBQ0Y7UUFDRDtZQUNFLElBQUksRUFBRSxLQUFLO1lBQ1gsV0FBVyxFQUFFLCtCQUErQjtZQUM1QyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLG1DQUFtQyxFQUFFO2lCQUMxRTtnQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDbEI7U0FDRjtRQUNEO1lBQ0UsSUFBSSxFQUFFLFVBQVU7WUFDaEIsV0FBVyxFQUNULHFHQUFxRztZQUN2RyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsVUFBVSxFQUFFO29CQUNWLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLHNDQUFzQyxFQUFFO29CQUM1RSxNQUFNLEVBQUU7d0JBQ04sSUFBSSxFQUFFLFFBQVE7d0JBQ2QsV0FBVyxFQUNULDJGQUEyRjtxQkFDOUY7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQzthQUM1QjtTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFdBQVcsRUFBRSw2Q0FBNkM7WUFDMUQsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxRQUFRO2dCQUNkLFVBQVUsRUFBRTtvQkFDVixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxxQ0FBcUMsRUFBRTtpQkFDNUU7Z0JBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ2xCO1NBQ0Y7S0FDRixDQUFDO0lBRU0sWUFBWSxDQUFxQztJQUVsRCxLQUFLLENBQUMsVUFBVTtRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPLENBQ2xCLE1BQWMsRUFDZCxNQUErQjtRQUUvQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQztZQUNILFFBQVEsTUFBTSxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDO29CQUNsQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEdBQWEsQ0FBQyxDQUFDO29CQUNoRixPQUFPO3dCQUNMLE9BQU8sRUFBRSxJQUFJO3dCQUNiLE1BQU0sRUFBRTs0QkFDTixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7NEJBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJOzRCQUNqQixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7NEJBQ2IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7NEJBQzNELFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU07NEJBQ2xDLElBQUksRUFBRSxZQUFZO3lCQUNuQjtxQkFDRixDQUFDO2dCQUNKLENBQUM7Z0JBRUQsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNYLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQWEsQ0FBQyxDQUFDO29CQUN6RSxPQUFPO3dCQUNMLE9BQU8sRUFBRSxJQUFJO3dCQUNiLE1BQU0sRUFBRTs0QkFDTixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7NEJBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJOzRCQUNqQixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7NEJBQ2IsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7NEJBQzNELFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU07NEJBQ2xDLElBQUksRUFBRSxLQUFLO3lCQUNaO3FCQUNGLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ2hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO29CQUN2QywyQ0FBMkM7b0JBQzNDLDZEQUE2RDtvQkFDN0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBYSxFQUFFLEtBQUssSUFBSSxFQUFFO3dCQUNyRixtQ0FBbUM7d0JBQ25DLG9EQUFvRDt3QkFDcEQsbUNBQW1DO3dCQUNuQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLENBQUM7b0JBRUgsT0FBTzt3QkFDTCxPQUFPLEVBQUUsSUFBSTt3QkFDYixNQUFNLEVBQUU7NEJBQ04sR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHOzRCQUNmLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs0QkFDckUsZ0JBQWdCLEVBQUUsTUFBTTt5QkFDekI7cUJBQ0YsQ0FBQztnQkFDSixDQUFDO2dCQUVELEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO29CQUN0QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFhLEVBQUUsS0FBSyxJQUFJLEVBQUU7d0JBQ3JGLE9BQU87NEJBQ0wsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLOzRCQUNyQixXQUFXLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLElBQUksRUFBRTs0QkFDM0MsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTt5QkFDMUIsQ0FBQztvQkFDSixDQUFDLENBQUMsQ0FBQztvQkFFSCxPQUFPO3dCQUNMLE9BQU8sRUFBRSxJQUFJO3dCQUNiLE1BQU0sRUFBRTs0QkFDTixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7NEJBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLOzRCQUNuQixXQUFXLEVBQ1QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsS0FBSztnQ0FDL0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxpQkFBaUI7Z0NBQzVELENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVzs0QkFDeEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHO3lCQUN0QjtxQkFDRixDQUFDO2dCQUNKLENBQUM7Z0JBRUQ7b0JBQ0UsT0FBTzt3QkFDTCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxLQUFLLEVBQUUsbUJBQW1CLE1BQU0sRUFBRTtxQkFDbkMsQ0FBQztZQUNOLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDOUQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpRFYsQ0FBQztJQUNBLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBYyxFQUFFLE1BQStCO1FBQ25FLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLFlBQVk7Z0JBQ2YsT0FBTyx1QkFBdUIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBRTlDLEtBQUssS0FBSztnQkFDUixPQUFPLHNCQUFzQixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7WUFFN0MsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBZ0IsQ0FBQztnQkFDdkMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUNoRixPQUFPLDBCQUEwQixNQUFNLENBQUMsR0FBRyxPQUFPLE9BQU8sR0FBRyxDQUFDO1lBQy9ELENBQUM7WUFFRCxLQUFLLGdCQUFnQjtnQkFDbkIsT0FBTyxvQ0FBb0MsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBRTNEO2dCQUNFLE9BQU8sbUJBQW1CLE1BQU0sRUFBRSxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -1,21 +0,0 @@
1
- import * as interfaces from './smartagent.interfaces.js';
2
- import { BaseToolWrapper } from './smartagent.tools.base.js';
3
- /**
4
- * Deno permission types for sandboxed code execution
5
- */
6
- export type TDenoPermission = 'all' | 'env' | 'ffi' | 'hrtime' | 'net' | 'read' | 'run' | 'sys' | 'write';
7
- /**
8
- * Deno tool for executing TypeScript/JavaScript code in a sandboxed environment
9
- * Wraps @push.rocks/smartdeno
10
- */
11
- export declare class DenoTool extends BaseToolWrapper {
12
- name: string;
13
- description: string;
14
- actions: interfaces.IToolAction[];
15
- private smartdeno;
16
- initialize(): Promise<void>;
17
- cleanup(): Promise<void>;
18
- execute(action: string, params: Record<string, unknown>): Promise<interfaces.IToolExecutionResult>;
19
- getToolExplanation(): string;
20
- getCallSummary(action: string, params: Record<string, unknown>): string;
21
- }