@ugm/desiagent 0.1.26 → 0.1.27
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.
|
@@ -6,19 +6,50 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { ToolDefinition } from '../../types/index.js';
|
|
8
8
|
import type { ToolRegistry } from '../tools/registry.js';
|
|
9
|
+
import type { BaseTool, ToolContext } from '../tools/base.js';
|
|
9
10
|
/**
|
|
10
11
|
* ToolsService handles tool listing and queries
|
|
11
12
|
*/
|
|
12
13
|
export declare class ToolsService {
|
|
13
14
|
private registry;
|
|
14
|
-
|
|
15
|
+
private restrictedList;
|
|
16
|
+
private static readonly DEFAULT_RESTRICTED;
|
|
17
|
+
constructor(registry: ToolRegistry, restrictedList?: string[]);
|
|
15
18
|
/**
|
|
16
|
-
* List all available tools
|
|
19
|
+
* List all available tools (with optional filtering)
|
|
17
20
|
*/
|
|
18
21
|
list(filter?: Record<string, any>): Promise<ToolDefinition[]>;
|
|
19
22
|
/**
|
|
20
|
-
* Get a specific tool by name
|
|
23
|
+
* Get a specific tool by name (returns definition)
|
|
21
24
|
*/
|
|
22
25
|
get(name: string): Promise<ToolDefinition | null>;
|
|
26
|
+
/**
|
|
27
|
+
* Get a tool instance by name
|
|
28
|
+
*/
|
|
29
|
+
getTool(name: string): BaseTool | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Get all tool instances
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* Get all tool definitions
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* Check if a tool exists
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Filter tools by names
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Register a new tool
|
|
44
|
+
*/
|
|
45
|
+
/**
|
|
46
|
+
* Check if a tool is restricted
|
|
47
|
+
*/
|
|
48
|
+
isRestricted(name: string): boolean;
|
|
49
|
+
isAllowed(name: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Execute a tool by name (blocks restricted tools)
|
|
52
|
+
*/
|
|
53
|
+
execute(toolName: string, input: any, ctx: ToolContext): Promise<any>;
|
|
23
54
|
}
|
|
24
55
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAaxC;gBAEU,QAAQ,EAAE,YAAY,EAAE,cAAc,GAAE,MAAM,EAAoC;IAK9F;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBnE;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAMvD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAQ3C;;OAEG;IAMH;;OAEG;IAMH;;OAEG;IAKH;;OAEG;IAKH;;OAEG;IAKH;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,CAAC,IAAI,EAAC,MAAM,GAAE,OAAO;IAG9B;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAO5E"}
|
|
@@ -9,25 +9,106 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export class ToolsService {
|
|
11
11
|
registry;
|
|
12
|
-
|
|
12
|
+
restrictedList;
|
|
13
|
+
static DEFAULT_RESTRICTED = [
|
|
14
|
+
'bash',
|
|
15
|
+
// 'readFile',
|
|
16
|
+
// 'writeFile',
|
|
17
|
+
'fetchPage',
|
|
18
|
+
'webSearch',
|
|
19
|
+
'fetchURLs',
|
|
20
|
+
'glob',
|
|
21
|
+
'grep',
|
|
22
|
+
'edit',
|
|
23
|
+
// 'sendEmail',
|
|
24
|
+
// 'readEmail',
|
|
25
|
+
'sendWebhook',
|
|
26
|
+
];
|
|
27
|
+
constructor(registry, restrictedList = ToolsService.DEFAULT_RESTRICTED) {
|
|
13
28
|
this.registry = registry;
|
|
29
|
+
this.restrictedList = new Set(restrictedList);
|
|
14
30
|
}
|
|
15
31
|
/**
|
|
16
|
-
* List all available tools
|
|
32
|
+
* List all available tools (with optional filtering)
|
|
17
33
|
*/
|
|
18
34
|
async list(filter) {
|
|
19
35
|
let tools = this.registry.getAllDefinitions();
|
|
20
36
|
if (filter?.name) {
|
|
21
|
-
tools = tools.filter((t) => t.function.name === filter.name);
|
|
37
|
+
tools = tools.filter((t) => (t.function.name === filter.name && this.isRestricted(t.function.name)));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
tools = tools.filter((t) => !this.isRestricted(t.function.name));
|
|
22
41
|
}
|
|
23
42
|
return tools;
|
|
24
43
|
}
|
|
25
44
|
/**
|
|
26
|
-
* Get a specific tool by name
|
|
45
|
+
* Get a specific tool by name (returns definition)
|
|
27
46
|
*/
|
|
28
47
|
async get(name) {
|
|
29
48
|
const tool = this.registry.get(name);
|
|
30
|
-
return tool ? tool.toJSONSchema() : null;
|
|
49
|
+
return tool && this.isAllowed(name) ? tool.toJSONSchema() : null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get a tool instance by name
|
|
53
|
+
*/
|
|
54
|
+
getTool(name) {
|
|
55
|
+
if (this.isAllowed(name)) {
|
|
56
|
+
return this.registry.get(name);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get all tool instances
|
|
64
|
+
*/
|
|
65
|
+
// Not needed
|
|
66
|
+
//getAll(): BaseTool[] {
|
|
67
|
+
// return this.registry.getAll();
|
|
68
|
+
//}
|
|
69
|
+
/**
|
|
70
|
+
* Get all tool definitions
|
|
71
|
+
*/
|
|
72
|
+
//Not needed
|
|
73
|
+
// getAllDefinitions(): ToolDefinition[] {
|
|
74
|
+
// return this.registry.getAllDefinitions();
|
|
75
|
+
// }
|
|
76
|
+
/**
|
|
77
|
+
* Check if a tool exists
|
|
78
|
+
*/
|
|
79
|
+
// hasTool(name: string): boolean {
|
|
80
|
+
// return this.registry.hasTool(name);
|
|
81
|
+
// }
|
|
82
|
+
/**
|
|
83
|
+
* Filter tools by names
|
|
84
|
+
*/
|
|
85
|
+
// filterByNames(names?: string[]): BaseTool[] {
|
|
86
|
+
// return this.registry.filterByNames(names);
|
|
87
|
+
// }
|
|
88
|
+
/**
|
|
89
|
+
* Register a new tool
|
|
90
|
+
*/
|
|
91
|
+
// register(tool: BaseTool): void {
|
|
92
|
+
// this.registry.register(tool);
|
|
93
|
+
// }
|
|
94
|
+
/**
|
|
95
|
+
* Check if a tool is restricted
|
|
96
|
+
*/
|
|
97
|
+
isRestricted(name) {
|
|
98
|
+
return this.restrictedList.has(name);
|
|
99
|
+
}
|
|
100
|
+
isAllowed(name) {
|
|
101
|
+
return !this.isRestricted(name);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Execute a tool by name (blocks restricted tools)
|
|
105
|
+
*/
|
|
106
|
+
async execute(toolName, input, ctx) {
|
|
107
|
+
if (this.isRestricted(toolName)) {
|
|
108
|
+
return null;
|
|
109
|
+
//throw new Error(`Tool '${toolName}' is restricted and cannot be executed`);
|
|
110
|
+
}
|
|
111
|
+
return this.registry.execute(toolName, input, ctx);
|
|
31
112
|
}
|
|
32
113
|
}
|
|
33
114
|
//# sourceMappingURL=tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED